Open_GL中的多边形材料

polygon material in Open_GL

本文关键字:多边形 材料 GL Open      更新时间:2023-10-16

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

面不受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();

确保你glEnable(GL_COLOR_MATERIAL),正如Ananthanonline建议的那样,确保照明设置好。

编辑:

对不起,你可能需要, glDisable(GL_COLOR_MATERIAL)

由于启用它指定了每个顶点的颜色。 虽然考虑一下,但它可能没有任何影响,因为您没有指定顶点颜色。

你能展示一下灯光的设置方式吗? 您在镜面反射/漫反射等灯光上指定了什么颜色?