我有一个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,并通过模型视图和投影矩阵进行转换。您的代码使用固定的管道(旧的OpenGL),而这些转换是GL为您“神奇地”完成的。

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

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

07-24 09:46
查看更多