とあるライブラリをいじっているときに以下のコマンドでエラーが発生。
glGetMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE,matenvGL_DIFFUSE)
リファレンスで確認したところOpenGL ESだとFace(第一引数の値。どの面に対するアクションであるかを指定)が GL_FRONT か GL_BACK しか使えないみたい。
glGetMaterial
http://khronos.org/opengles/sdk/1.1/docs/man/glGetMaterial.xml
取得の方を修正したので設定の方のコマンド glMaterial() も GL_FRONT に設定したところエラー発生。
ずっと悩みながら調査を進め、リファレンスを確認するとこちらは GL_FRONT_AND_BACK だけしか対応していないらしい。
glMaterial
http://khronos.org/opengles/sdk/1.1/docs/man/glMaterial.xml
こんなプログラムを作ってデータを確認したところ GL_FRONT と GL_BACK の両方ともちゃんと値が変更されてた。
GLfloat mat[4]; glGetMaterialfv(GL_FRONT, GL_EMISSION, mat); mat[0] = 0.5f; mat[1] = 0.5f; mat[2] = 0.5f; mat[3] = 0.5f; glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, mat); glGetMaterialfv(GL_FRONT, GL_EMISSION, mat); glGetMaterialfv(GL_BACK, GL_EMISSION, mat);
どうせ設定のコマンドで GL_FRONT_AND_BACK しか使えないなら取得のコマンドも GL_FRONT_AND_BACK だけ使える様にしとけば良さそうなの何でこんな仕様なんだろ?