私はエンジンを書いていて、シーンの「太陽」としてライト0を使用しています。太陽は指向性の光です。OpenGL指向照明+ポジショニング
シーンの直交視点を設定し、画面の「東」側(および文字)に光を設定します(x/yは平面の地形の座標で、正のzをカメラに向けます)。地形上に「高さ」を示す - シーンもx軸の等角図に対して回転します)。
光が0,0,0の明るい「東」を照らしているように見えますが、文字が動くとシフトしません(CenterCameraは指定された値の負の値でglTranslate3fを実行します。世界座標)。意味は、さらに私は西に移動する、それは常に暗い、光なしです。
Graphics.BeginRenderingLayer();
{
Video.MapRenderingMode();
Graphics.BeginLightingLayer(Graphics.AmbientR, Graphics.AmbientG, Graphics.AmbientB, Graphics.DiffuseR, Graphics.DiffuseG, Graphics.DiffuseB, pCenter.X, pCenter.Y, pCenter.Z);
{
Graphics.BeginRenderingLayer();
{
Graphics.CenterCamera(pCenter.X, pCenter.Y, pCenter.Z);
RenderMap(pWorld, pCenter, pCoordinate);
}
Graphics.EndRenderingLayer();
Graphics.BeginRenderingLayer();
{
Graphics.DrawMan(pCenter);
}
Graphics.EndRenderingLayer();
}
Graphics.EndLightingLayer();
}
Graphics.EndRenderingLayer();
Graphics.BeginRenderingLayer = PushMatrix、EndRenderingLayer = PopMatrix Video.MapRenderingMode =オルソ投影シーン回転/ズームCenterCamera文字が今でセンタリングされるように、X/Y/Zの反対側に変換ありませんX/Y/Zを画面中央に表示します。
どのような考えですか?多分私のコードのいくつかをここで少し混乱させてしまったでしょうか?次のように
照明コードは次のとおりです。
public static void BeginLightingLayer(float pAmbientRed, float pAmbientGreen, float pAmbientBlue, float pDiffuseRed, float pDiffuseGreen, float pDiffuseBlue, float pX, float pY, float pZ)
{
Gl.glEnable(Gl.GL_LIGHTING);
Gl.glEnable(Gl.GL_NORMALIZE);
Gl.glEnable(Gl.GL_RESCALE_NORMAL);
Gl.glEnable(Gl.GL_LIGHT0);
Gl.glShadeModel(Gl.GL_SMOOTH);
float[] AmbientLight = new float[4] { pAmbientRed, pAmbientGreen, pAmbientBlue, 1.0f };
float[] DiffuseLight = new float[4] { pDiffuseRed, pDiffuseGreen, pDiffuseBlue, 1.0f };
float[] PositionLight = new float[4] { pX + 10.0f, pY, 0, 0.0f };
//Light position of Direction is 5 to the east of the player.
Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_AMBIENT, AmbientLight);
Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_DIFFUSE, DiffuseLight);
Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_POSITION, PositionLight);
Gl.glEnable(Gl.GL_COLOR_MATERIAL);
Gl.glColorMaterial(Gl.GL_FRONT_AND_BACK, Gl.GL_AMBIENT_AND_DIFFUSE);
}
ライトを設定する場所を示すコードを投稿すると役立ちます。 – kappamaki
照明コードを含むようにオリジナルを編集しました。 – Locke
各頂点の法線を計算して送信していますか? –