有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javahowgl。glTranslatef()是否影响特定顶点坐标?

我有一个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 )调用之后,它的坐标会受到怎样的影响

我需要它,以便知道立方体的新坐标位置


共 (1) 个答案

  1. # 1 楼答案

    首先阅读本教程: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]