OpenGL中的多边形材质

时间:2012-04-23 21:30:35

标签: c++ opengl glut

我试图改变多边形的材质,但它不起作用,我不知道为什么,

多边形不受GL_AMBIENT,GL_DIFFUSE,GL_SPECULAR和GL_SHININESS的影响。

GLfloat mat_ambient[] = { 1, 0.5, 0, 1.0 };
GLfloat mat_diffuse[] = { 0.4, 0.2, 0, 1.0 };
GLfloat mat_specular[] = { 0.774597, 0.774597, 0.774597, 1.0 };
GLfloat mat_shine = 0.6;

glMaterialfv (GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv (GL_FRONT, GL_DIFFUSE, mat_diffuse);
glMaterialfv (GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialf (GL_FRONT, GL_SHININESS, mat_shine * 128);


glPushMatrix();
glTranslatef(axeX, axeY, 0);
glRotatef(angle, 0, 0, 1);

glBegin(GL_POLYGON);

    glNormal3f(0,0,1);
    glVertex3f (-0.25, 0.5, 1.0);

    glVertex3f (-0.5, 0.25, 1.0);

    glVertex3f (-0.5, -0.25, 1.0);

    glVertex3f (-0.25, -0.5, 1.0);

    glVertex3f (0.25, -0.5, 1.0);

    glVertex3f (0.5, -0.25, 1.0);

    glVertex3f (0.5, 0.25, 1.0);

    glVertex3f (0.25, 0.5, 1.0);

glEnd();
glPopMatrix();

1 个答案:

答案 0 :(得分:0)

确保glEnable(GL_COLOR_MATERIAL)并按照ananthanonline的建议,确保设置了照明。

编辑:

抱歉,你可能需要,     glDisable(GL_COLOR_MATERIAL)

因为启用它指定每顶点着色。考虑到这一点,它可能没有任何效果,因为你没有指定顶点颜色。

你能说明灯的设置方式吗?你在光线上为镜面/漫反射等指定了哪些颜色?