我很抱歉,因为这似乎是一个非常简单的问题,应该很明显,但似乎我一无所知。
我正在编写一个引擎并使用 Light 0 作为场景的“太阳”。我认为,理想情况下,太阳将是一个固定的光源,而不是一个向量,所以位置向量中的 w/fourth 索引应该是 1.0f。
我设置了场景的正交视点,然后将灯光设置在角色的位置(x/y 是平面地形的坐标,正 z 朝向相机并指示地形上的“高度”——场景是也为 x 轴上的等距视图旋转)。
角色始终位于屏幕中央——但我注意到,出于某种原因,灯光似乎照射在角色和世界坐标 0,0,0 之间的位置。角色离世界坐标 0,0,0 越远,光线越大/越宽。如果角色位于 0,0,0,则光线非常小。如果角色移动到类似 0,200,0 的位置,则光线非常大。
我只是想弄湿我的脚,并让一个“光”跟随角色(然后调整位置等,然后创建一个太阳)。
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 = Ortho Projection and Scene Rotation/Zoom CenterCamera 会转换到 X/Y/Z 的反面,这样角色现在就以 X/Y/Z 为中心屏幕中间。
有什么想法吗?也许我在这里有点混淆了我的一些代码?