私は本Pro OpenGL ES for Androidをフォローしており、鏡面反射光を正しくレンダリングしようとしています。何が起こっているかは次のとおりです。
OpenTK の ES11.GL を使用しています。
これは私の照明コードです:
float[] pos = { -14.0F, 7.0F, -50.0F, 1.0F };
float[] white = { 1.0f, 1.0f, 1.0f, 1.0f };
float[] red = { 1.0f, 0.0f, 0.0f, 1.0f };
float[] green = { 0.0f, 1.0f, 0.0f, 1.0f };
float[] blue = { 0.0f, 0.0f, 1.0f, 1.0f };
float[] grey = { 0.2f, 0.2f, 0.2f, 1.0f };
GL.LightModel(All.LightModelAmbient, grey);
GL.Light(Sunlight, All.Position, pos);
GL.Light(Sunlight, All.Diffuse, white);
GL.Light(Sunlight, All.Specular, red);
GL.Light(Sunlight, All.Ambient, blue);
GL.Material(All.FrontAndBack, All.Specular, red);
GL.Material(All.FrontAndBack, All.Diffuse, green);
//GL.Material(All.FrontAndBack, All.Shininess, 5.0F); -- disabled for testing
GL.ShadeModel(All.Smooth);
GL.Enable(All.Lighting);
GL.Enable(Sunlight);
私は 3D と OpenGL の両方に非常に慣れていないため、この問題の原因がわかりません。光を反対側に移動すると、イメージが反転します。ライトが球体の真正面からのものである場合、スペックはまったく表示されません。
基本的なライトは正しく動作するのに、仕様を含めると失敗するのはなぜですか?