JOGL - 打开GL - 保持世界的一部分静止,同时移动其余部分

时间:2011-04-27 19:09:11

标签: java opengl camera jogl

我是JOGL的新手,我正在开发一款游戏。我有一枚火箭,背景中的星星和行星。我希望火箭在屏幕底部保持静止,按下GO按钮,然后行星开始下降,火箭要避开。

我一直在打击,行星落下(通过翻译),火箭也下降了。我知道为什么这会在相机移动时发生,所以整个世界都在移动。我一直在尝试使用pushMatrix和popMatrix,但没有运气。

if (goButtonPressed)  
{
    //gl.glTranslatef(0.0f,0.3f,0f);   // this line just keeps the whole thing still  
    drawRocket(gl);                    // I was trying to 'undo' the translation  
    gl.glPushMatrix();  
    gl.glMatrixMode(GL.GL_PROJECTION);  
    gl.glTranslatef(0.0f, -0.3f, 0f);  
    gl.glPopMatrix();  
}

我想在opengl做什么?我让它太难了吗?

2 个答案:

答案 0 :(得分:1)

如何将这些信息存储在您自己的代码中,然后将绝对坐标传递给JOGL,而不是依靠投影矩阵来保持火箭位置的状态?然后,可以使用更明显的代码(例如rocket.y += dy;

来更新对象的位置

作为一小部分,投影矩阵不打算用于空间变换。请使用GL_MODELVIEW来避免细微问题。

答案 1 :(得分:0)

不完全是你问题的答案,但如果你想用Java中的opengl制作游戏,你应该看一下JMonkeyEngine。

http://jmonkeyengine.com/

您尝试做的事情当然可以使用opengl,并且使用JMonkeyEngine非常容易。他们在自己的网站上有很多教程等。