OpenGL のライトに問題があります:
このコードでボールのライトを変更します:
switch(option) {
case ambient:
glLightfv(GL_LIGHT0,GL_AMBIENT,lum_ambient);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_ambient);
break;
case diffuse:
glLightfv(GL_LIGHT0,GL_DIFFUSE,lum_diffuse);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
break;
case specular:
glLightfv(GL_LIGHT0,GL_SPECULAR,lum_speculaire);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_speculaire);
break;
}
アンビエントからディフューズまたはスペキュラーに変更できます。しかし、一度変更すると、アンビエントに戻ることができず、さらに悪いことに、ディフューズに戻るには、アンビエントを呼び出す必要があります。
そして、私はそれがこのコードから来ているとは思わない:
switch (key) {
case 27:
exit(1);
case '1':
option = ambient;
glutPostRedisplay();
break;
case '2':
option = diffuse;
glutPostRedisplay();
break;
case '3':
option = specular;
glutPostRedisplay();
break;
}
私の問題がどこから来たのか分かりますか?