0

我需要用三角形和球体绘制一个对象。我的对象有自己的材质属性,我用 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();

    }




}
4

1 回答 1

1

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

于 2012-12-27T17:19:10.053 回答