テクスチャキューブの隣にある頂点カラーキューブをglDrawArrays()
と同時に描画していて、ライティングを有効にするとテクスチャキューブが「やや明るく」なることがわかりました。 が呼び出された直後に、すぐにglDisable(GL_COLOR_MATERIAL)
が呼び出されても、テクスチャキューブに「やや明るい」効果が発生することがわかりました。ここでOpenGL glEnable(GL_COLOR_MATERIAL)に続いてglDisable(GL_COLOR_MATERIAL)
が短い説明です:
glEnable(GL_COLOR_MATERIAL);
glDisable(GL_COLOR_MATERIAL);
(...)
glDrawArrays(GL_QUADS, 0, n);
glEnable(GL_COLOR_MATERIAL)
がまったく呼び出されない場合、キューブが黄色で描かれています。 glEnable(GL_COLOR_MATERIAL)
が呼び出された場合、その後にもglDisable(GL_COLOR_MATERIAL)
が付いていても、キューブはやや明るい黄色で描画され、「最初の濃い黄色のキューブの色」に戻ることはできません。
これが予期した動作であるかどうか教えてください。
確かにバグのようです。どのようなOSとどのタイプのGPU(NVidia、ATI)ですか? – user1118321
WinXPのSP3 Home Editionの ATIのRadeon HD4850 OpenGLのバージョン\t 6.14.10.11251 で初期状態私はそれはバグだと思ったが、その後PFD_GENERIC_FORMATでテストされ、同じ結果を得ました。 glEnable(GL_COLOR_MATERIAL)の後、OpenGLの状態のカラーマテリアルが「いくらか」の色でオンザフライで更新されているようです。 – luiez