Open_GL 中的多边形材质

Posted

技术标签:

【中文标题】Open_GL 中的多边形材质【英文标题】:polygon material in Open_GL 【发布时间】:2012-04-23 21:30:35 【问题描述】:

我正在尝试更改多边形的材质,但它不起作用,我不知道为什么,

多边形不受 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】:

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

编辑:

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

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

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

【讨论】:

我应该在哪里启用 GL_COLOR_MATERIAL ?~ 你能编辑那个代码吗?我不知道你在说什么。 颜色材质用于将 glColor 与一个特定的材质设置相关联。但是 OP 已经在设置所有材料参数。实际上他应该仔细检查一下,颜色材料不会干扰他的参数。 @datenwolf 是的,我的错。我不应该在深夜发帖。

以上是关于Open_GL 中的多边形材质的主要内容,如果未能解决你的问题,请参考以下文章

Depth Bias 以及 Ogre材质中的depth_bias

fbx格式的模型是多边形的么

IfcPolygonalBoundedHalfSpace

“obj”是啥意思?

vary设定的贴图为啥显示不出来而且渲染之后只是单色而没有纹理

图形渲染管线简介