我有一个关于使用push / pop stack绘制多个对象的问题。类似于此。
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(x,y,z);
glRotate(r,1,0,0);
glTranslate(-x,-y,-z);
for (i=0 to 20) objects
glpushMatrix();
draw_object()
glpopMatrix();
end
每个对象都是一个具有自己变换的单位圆。在这种情况下,光线拾取如何工作。我应该如何跟踪物体的中心点来计算光线交叉点。我真的很感激任何帮助。
答案 0 :(得分:0)
您可以获取每个对象的当前矩阵:
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(x,y,z);
glRotate(r,1,0,0);
glTranslate(-x,-y,-z);
for (i=0 to 20) objects
glpushMatrix();
... some matrix transformations specific for the object
... and get the final matrix and store it to object member
glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat*)&object->modelMatrix);
draw_object()
glpopMatrix();
进行光线交叉时,只需将对象矩阵与局部中心点坐标相乘,即可得到定义光线的绝对空间。