OpenGLでCGにglColor3dで色をつけることができなかった時の対処法。
作成したプログラムでは照明としてライトを当てていたことが原因だった。
どうやら、OpenGLではlightとcolor関数は共存できないみたい。
そこで、作成した立体の材質を決めることで色をつけるように変更した。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/*省略*/ 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(); } /*省略*/ |
○色がついてない時
○色をつけた時