0

三角形と球でオブジェクトを描く必要があります。私のオブジェクトには、glMaterialfvで定義する独自のマテリアルプロパティがあります。球は色の付いた球です。ただし、オブジェクトの一部(ポリゴンの1つ)は球の色で色付けされています。どうすればこの問題を解決できますか?

私のオブジェクト関数

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

ここでの2つの間違い:描画操作の前にマテリアルミューズを設定します。またglMaterialfv、glBegin/glEndブロック内では無効です。ところで、そもそもイミディエイトモード(glBegin / glEnd)を使うべきではありません。その使用は、15年以上もの間推奨されていません。

于 2012-12-27T17:19:10.053 に答える