- glColor*(...)で指定した色を、プリミティブの材質の色とするには、以下のようにします。
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
...
glColor3f(0.75f, 0.75f, 0.75f);
glBegin(GL_TRIANGLES);
glEnd();
- 法線を自動で生成するには glEnable(GL_AUTO_NORMAL) を使いますが、遅くなります。なるべくプログラム内で計算し与えましょう。
- モデルビュー・マトリックスを glScale* で変更した際、法線も影響を受け単位ベクトルでなくなってしまい、その結果、ライティングの結果がおかしくなってしまいます。それを防ぐため、 glEnable(GL_RESCALE_NORMALS) を使います。
- 描写する線や点をスムーズ(Smoothing)にするには、以下のように行いますが、たいていは Multisampling を使えばうまくいきます。
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_POINT_SMOOTH);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_POLYGON_SMOOTH);
- Multisampling は以下のように行います。なお、Multisampling と Smoothing は同時に使えません。
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH | GLUT_MULTISAMPLE);
glEnable(GL_MULTISAMPLE);
glFori(GL_FOG_COORD_SRC, GL_FOR_COORD);
glBegin(GL_TRIANGLES);
glFogCoordf(10.0f);
glEnd();
glFogi(GL_FOG_COORD_SRC, GL_FRAGMENT_DEPTH);
glBegin(GL_TRIANGLES);
glEnd();