我可能有一個簡單的數學問題,我很難搞清楚。我有一個可調整大小的LWJGL(OpenGL)窗口。我製作的遊戲是2D的,但我使用glFrustum()來獲得我的精靈的深度。下面是我的投影代碼(有點簡化)片段:LWJGL光標在調整大小時出現問題
double divider = 64.0;
double left = -vw/divider;
double right = vw/divider;
double bottom = vh/divider;
double top = -vh/divider;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(left * aspect, right * aspect, bottom, top, 8, 65536);
float zModifier = -256;
float vRatio = Game.HEIGHT/Display.getHeight();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(-vw/2.0f, -vh/2.0f, zModifier * vRatio);
(我必須承認,我不明白的視錐位非常好,我發現這段代碼在互聯網上的某個地方,它曾我很好...)
但是,我用一個精靈渲染自己的光標,並在光標與窗口邊界接觸時切換到本機光標。這一切都很好,直到我使窗口可調整大小。
現在我的問題是,當我調整窗口的大小時,本地光標與光標光標相對於vRatio
「不同步」。根據調整後的窗口大小,它會「跳」一點,或者更多一點。
當精靈光標來與邊框接觸,我做了以下內容:
- 隱藏精靈光標
- 顯示本機光標
- 將本地光標的位置雪碧光標的位置(這不能正常工作了)
我覺得有一個簡單的數學解決方案,這一點,但我不明白我出來(我試過的東西......但..)。
我希望我的問題不是太模糊,並且我提供了足夠的信息!
當你調整窗口大小時,你在更新'Game.HEIGHT'嗎? – corsiKa
不,我不是,我用這一點代碼來適應遊戲區域大小的窗口。 – n00bster
我明白了。那麼,對窗戶的寬度以及如何適當縮放會有什麼顧慮?看起來你真的需要兩個比率,除非你堅持認爲你的遊戲窗口總是具有相同的w:h比率, – corsiKa