glDisable(GL_COLOR_MATERIAL)不能正常工作

glDisable(GL_COLOR_MATERIAL) does not work properly

本文关键字:常工作 工作 MATERIAL GL COLOR glDisable 不能      更新时间:2023-10-16

我需要画一个三角形和球体的对象。我的对象有它自己的材质属性,我用glMaterialfv定义它们。球体只是一个有颜色的球体。然而,我的物体的某些部分(它是它的多边形之一)是用球体的颜色着色的。我该如何解决这个问题?

my object function

void drawObject()
{glDisable(GL_COLOR_MATERIAL);


    for(int i=0;i<j;i++)
    {   glBegin(GL_TRIANGLES);
        glNormal3f(..);
        glVertex3f(..);
        glNormal3f(..);
        glVertex3f(..);
        glNormal3f(..);
        glVertex3f(..);
        GLfloat ambientValues[]={..};
        GLfloat specularValues[]={..};
        GLfloat diffuseValuse[]={..};
        glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT,ambientValues);
        glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE,diffuseValues);
        glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR,specularValues);

        glEnd();
    }


}

这里有两个错误:必须在绘图操作之前设置材料。glMaterialfv在glBegin/glEnd块中无效。顺便说一句,你首先不应该使用立即模式(glBegin/glEnd)。