1
這是2D遊戲,所以只有x和y軸。 iPhone上的遊戲處於橫向模式。我希望能夠設置渲染紋理的位置的屏幕x和y座標。在OpenGL ES中,如何將屏幕座標轉換爲世界座標?
這是2D遊戲,所以只有x和y軸。 iPhone上的遊戲處於橫向模式。我希望能夠設置渲染紋理的位置的屏幕x和y座標。在OpenGL ES中,如何將屏幕座標轉換爲世界座標?
如果你正在做一個2D遊戲,你可以設置你的投影和模型視圖矩陣,使您不必在所有轉換:
// This goes in your init code somewhere
// Set up 480x320 orthographic projection
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(-240.0f, 240.0f, -160.0f, 160.0f, -1.0f, 1.0f);
// Rotate into landscape mode
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(-90.0f, 0.0f, 1.0f, 0.0f);
這就使世界座標(-240,-160)映射到屏幕的左上角(橫向模式下的左下角),(240,160)映射到右下角(橫向上的右上角)等。由於iPhone的屏幕是480x320,您不需要在世界和屏幕座標之間進行轉換,因此您的矩陣已經設置好了。
當然,如果您希望能夠移動相機,那麼您需要根據相機的位置進行偏移。
感謝您的支持。我只注意到在iPhone的OpenGL ES中沒有gluOrtho2D方法。你會知道等效聲明是什麼嗎? – Dimitris 2009-03-04 17:35:57