2011-01-22 68 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(); 

在做射線相交只是乘以當地中心點的對象矩陣座標讓它在光線定義絕對空間。