我有一个3D立方体(8个顶点),存储在gl.glCallList(i)
(i
位置),每个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 )
调用后它的坐标会受到什么影响?
我需要它才能知道立方体的新坐标位置。
答案 0 :(得分: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]