2012-11-28 35 views
1

我有一個簡單的問題。獲取LWGL中的當前正常值

我正在研究Minecraft mod,它要求我禁用通過glOrtho()設置的可怕縮放比例並指定我自己,這樣我可以繪製出一個很好的非像素化字符串。如果你見過Minecraft,字體看起來很可怕。

在我的mod中,我使用Slick(2D Java遊戲API)來呈現字符串和加載字體。我已經正確設置了Slick並在菜單上看到了正確的字體繪製。唯一的問題是,在我的矩陣的復位......

GL11.glMatrixMode(GL11.GL_PROJECTION);  // Select Projection 
GL11.glPushMatrix();  // Push The Matrix 
GL11.glLoadIdentity();  // Reset The Matrix 
GL11.glOrtho(0, Minecraft.getMinecraft().displayWidth,     Minecraft.getMinecraft().displayHeight, 0, 3000.0D, -3000.0D); 
GL11.glMatrixMode(GL11.GL_MODELVIEW); // Select Modelview Matrix 
GL11.glPushMatrix(); // Push The Matrix 
GL11.glLoadIdentity(); // Reset The Matrix 

我失去先前的功能設置的翻譯和規模。 (我沒有寫過)

我可以很容易地通過這個遊戲的創造者Mojang寫的源碼獲得當前的比例因子。如果在重置矩陣之前我能夠達到規模和正常,我希望我可能有機會以1比1的像素比例正確渲染這些字符串(提供最佳的顯示分辨率)。

因此,底線:我如何獲得LWGL中的翻譯和比例尺信息?或者,鑑於我的情況,是否有更好的方法來做到這一點?

回答

0

你在推動矩陣。這就要求你用相同數量的glPopMatrix()調用來平衡這一點,以便堆棧不會溢出。每個glPushMatrixglPopMatrix對就像一組「大括號」。在關閉glPopMatrix之後,堆棧的矩陣狀態恢復爲與對應的glPushMatrix的調用之前的狀態。

但是! OpenGL不是場景圖,矩陣堆棧沒有定義「當前位置」或「電流縮放」。它定義了從模型空間到眼睛空間(模型視圖矩陣)以及從眼睛空間到剪輯空間(投影)的轉換。那就是,什麼是矩陣。沒有場景,沒有任何物體,在OpenGL中沒有關於位置和內容的內部存儲。所以我認爲你必須稍微調整一下OpenGL的想法。