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

标签 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中可行吗?我是不是把事情搞得太困难了?

最佳答案

与其依赖投影矩阵来保存火箭位置的状态,不如将此信息存储在您自己的代码中,然后将绝对坐标传递给 JOGL?然后可以使用更明显的代码来更新对象的位置,例如rocket.y += dy;

顺便说一句,投影矩阵并不打算用于空间变换。使用 GL_MODELVIEW 来避免日后出现微妙的问题。

关于java - JOGL - 打开 GL - 保持世界的一部分静止,同时移动其余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5809233/

相关文章:

java - 默认情况下,使用 java 8 运行 Java jar 会强制使用 TLS1.2 吗?

java - 缩放 OpenGL 游戏中的所有图形

c - 如何在 qt creator 中为 gcc 添加选项?

iphone - 在我的应用程序中实现 iPhone 相机中的 Flash 按钮动画?

java - Android - 在相机中设置指南

java - 如果 JTextField 中有任何输入,KeyListener 不会响应

java - 是否可以使用 RxJava 在非主线程中调用 “onSensorChanged” 方法?

java - 使用 Unitils 针对 Postgres 数据库运行单元测试时出现 NullPointerException

opengl - 为什么 OpenGL + GLSL 着色器不输出任何内容?

flutter - 如何做一个有 flutter 的相机滤镜?