2011-01-22 10 views
3

プッシュ/ポップスタックを使用して描画された複数のオブジェクトに関する質問があります。OpenGl ES:プッシュ/ポップ行列を使用して描画された複数のオブジェクトのレイピッキング


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

だけ線が定義されている絶対的な空間にそれを得るためにローカル座標中心点を持つオブジェクトの行列を掛ける線の交点を行います。

関連する問題