Skip to content

OpenGLで立体に色がつかないときの解決法。

OpenGLでCGにglColor3dで色をつけることができなかった時の対処法。

作成したプログラムでは照明としてライトを当てていたことが原因だった。
どうやら、OpenGLではlightとcolor関数は共存できないみたい。

そこで、作成した立体の材質を決めることで色をつけるように変更した。

/*省略*/

GLfloat red[] = {0.8, 0.2, 0.2,1.0};        //赤色
GLfloat green[] = {0.2, 0.8, 0.2, 1.0};     //緑色

void display(){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLightfv(GL_LIGHT0, GL_POSITION, light0pos);//ライト
    
    //赤色に設定
    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, green);
    Square(0.0, 0.0, 2.0, 2.0);

    //緑色に設定
    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, red);
    glTranslated(-0.25, 0, -0.25);
    Qube(0.0, 0.0, 0.0, 0.5, 0.5, 0.5);
    glFlush();
}

/*省略*/

○色がついてない時

○色をつけた時

DOWNLOAD: github.com/Kmasato/Object_colored

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です