Я хотел бы знать, как нарисовать цилиндр с плоской заливкой.
Это то, что я сделал до сих пор.
void drawCylinder(int numMajor, int numMinor, float height, float radius)
{
double majorStep = height / numMajor;
double minorStep = 2.0 * M_PI / numMinor;
int i, j;
for (i = 0; i < numMajor; ++i) {
float z0 = 0.5 * height - i * majorStep;
float z1 = z0 - majorStep;
glBegin(GL_TRIANGLE_STRIP);
for (j = 0; j <= numMinor; ++j) {
double a = j * minorStep;
float x = radius * cos(a);
float y = radius * sin(a);
glNormal3f(x / radius, y / radius, 0.0);
glTexCoord2f(j / numMinor, i / numMajor);
glVertex3f(x, y, z0);
glTexCoord2f(j / numMinor, (i + 1) / numMajor);
glVertex3f(x, y, z1);
}
glEnd();
}
}
Я понимаю, что знаю, как определить нормаль, однако эта нормаль дала мне плавное затенение вместо плоского. Могу ли я узнать, как сделать его плоским в OpenGL и GLUT?