3
我只是使用LWJGL 3設置了一個簡單的渲染器,當它在我的外部顯示器上運行時,它看起來像我期望的那樣,但是當它在我的Macbook上調整大小時,會縮小視口。然後,如果我移動窗口它修復它。以下是我啓動我的GL內容並調整窗口大小時運行的代碼。Macbook Pro上的glFrustum給出了意想不到的效果
public void resize(int width, int height)
{
val near = 0.1
val far = 100.0
GL11.glViewport(0, 0, width, height);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
float aspect = width/(float)height
float fov = (float)(45.0/360.0 * Math.PI)
float fH = Math.tan(fov) * near
float fW = fH * aspect
GL11.glFrustum(-fW, fW, -fH, fH, near, far);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity();
}
這裏是我所看到的
如果我運行它在我的外部顯示器上它不改變,它永遠是對的。
瘋狂的猜測:你的內部顯示器是一個視網膜顯示器?它看起來像是從窗口左下角到兩個屏幕截圖中呈現的對象之間的距離差異的一個因素。 – JWWalker
也許這可能有所幫助:http://wiki.lwjgl.org/wiki/Using_High_DPI_Mode – Amadeus
我認爲@JWWalker是對的!在您提到它之後,我在GLFW文檔中發現了這一點:注意不要將窗口大小傳遞給glViewport或其他基於像素的OpenGL調用。窗口大小在屏幕座標中,而不是像素。對於基於像素的調用,使用像素大小的framebuffer大小。 – CaseyB