我需要绘制一个带有三角形和一个球体的对象。我的对象具有自己的材质属性,可以使用glMaterialfv对其进行定义。球体只是具有颜色的球体。但是,我对象的某些部分(它是其多边形之一)已用球体的颜色着色。我怎么解决这个问题?

我的对象功能

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)。至今已不鼓励使用它超过15年。

关于c++ - glDisable(GL_COLOR_MATERIAL)无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14056474/

10-10 19:35