2011-01-22 69 views
3

我有一个关于使用推/弹出栈绘制的多个对象的问题。类似于这个。OpenGl ES:Ray使用推/弹出矩阵绘制多个对象


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

您可以获得当前矩阵的每个对象:

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(); 

在做射线相交只是乘以当地中心点的对象矩阵坐标让它在光线定义绝对空间。