0

我有一个 3D 立方体(8 个顶点),存储在gl.glCallList(i)( iposition) 中,每次display()调用都会通过常量(对于所有 x、y、z 位置)使用 gl.glTranslatef() -

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 )调用后会受到怎样的影响?

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

4

1 回答 1

2

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

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

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

for (i = 0; i < vertex_list.length; ++i)
    v_transformed[i] = transformation_matrix * vertex_list[i]
于 2013-08-15T12:06:07.440 回答