2013-03-21 92 views
0

我想知道如何绘制平面着色的圆柱体。如何画平面着色的三维圆柱体

这是我迄今为止所做的。

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中平坦吗?

回答

2

如果你想要平面着色,你只需要指定它。

glShadeModel(GL_FLAT); 
+0

是有办法做到这一点不用这种方法,因为这样做会导致问题到我的亮点,平滑阴影以及 – 2013-03-21 11:56:21

+0

你可以打开它和关闭,因为你需要。如果您不想使用它,则需要为面部的所有顶点提供相同的法线。因此,有些顶点需要多次指定,只需使用不同的法线。 – 2013-03-21 12:34:06