我对 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中可行吗?我是不是把事情搞得太困难了?
最佳答案
与其依赖投影矩阵来保存火箭位置的状态,不如将此信息存储在您自己的代码中,然后将绝对坐标传递给 JOGL?然后可以使用更明显的代码来更新对象的位置,例如rocket.y += dy;
。
顺便说一句,投影矩阵并不打算用于空间变换。使用 GL_MODELVIEW 来避免日后出现微妙的问题。
关于java - JOGL - 打开 GL - 保持世界的一部分静止,同时移动其余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5809233/