我很抱歉,因爲這看起來像是一個很明顯的直截了當的問題,但似乎我很無能。OpenGL照明和定位
我正在寫一個引擎,並使用Light 0作爲場景的「太陽」。我想,理想情況下,太陽將是一個固定的光源,而不是一個矢量,所以位置矢量中的第四個索引應該是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 =正交投影與場景旋轉/放大 CenterCamera確實一個轉換爲X/Y/Z的相反,使得該字符是現在以屏幕中間的X/Y/Z爲中心。
有什麼想法?也許我已經在這裏混淆了一些我的代碼?
通常太陽被定義爲定向光。 – Luca 2012-02-21 06:24:57