java - gl.glTranslatef() 如何影响特定的顶点坐标?

标签 java opengl jogl

我有一个 3D 立方体(8 个顶点),存储在 gl.glCallList(i) (i 位置)中,每个 display() 调用使用 gl.glTranslatef() 将其顶点位置更改为一个常量(对于其所有 x、y、z 位置) -

float tranX , tranY , tranZ ; 
public void display(GLAutoDrawable gLDrawable) {
    final GL gl = gLDrawable.getGL();
    gl.glLoadIdentity();
    gl.glPushMatrix();
    gl.glTranslatef(tranX ,tranY ,tranZ);
    gl.glCallList(i);
    gl.glPopMatrix();
    tranX += 0.05;
    tranY += 0.05;
    tranZ += 0.05;
}

让我们看一下由 x 、 y 和 z 组成的特定顶点,在一次 gl.glTranslatef(tranX ,tranY ,tranZ ) 调用后,它的坐标会受到怎样的影响?

我需要它才能知道立方体的新坐标位置。

最佳答案

首先阅读本教程:http://www.songho.ca/opengl/gl_transform.html

存储在显示列表中的顶点被推送到 GPU 并通过模型 View 和投影矩阵进行转换。您的代码使用固定管道(旧的 OpenGL),并且这些转换是由 GL “神奇地”为您完成的。

如果你想计算顶点的最终位置,你必须将顶点(每个顶点)的位置乘以所需的矩阵。

for (i = 0; i < vertex_list.length; ++i)
    v_transformed[i] = transformation_matrix * vertex_list[i]

关于java - gl.glTranslatef() 如何影响特定的顶点坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18251848/

相关文章:

c++ - 通过 ActiveX 在 WPF 中使用 OpenGL?

c - 如何从窗口获取 OpenGL 上下文?

java - 从文件夹加载纹理

netbeans - 在 netbeans 应用程序关闭之前执行操作——引用 netbeans 退出窗口事件

java - 无法旋转简单的 OpenGL 三角形

java - 如何计算 java 中类的大小 ..

java - 对同一个 Socket 使用多个 OutputStream 是否安全?

java - Java\Android 中的 ArrayList 性能

java - Google Drive API 无法列出文件 (v3 Java)

opengl - 在opengl中计算球体