OpenGl ES: выбор лучей для нескольких объектов, нарисованных с использованием матрицы push / pop - PullRequest
3 голосов
/ 22 января 2011

У меня возник вопрос относительно нескольких объектов, нарисованных с использованием стека push / pop.


    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
        
    

каждый объект представляет собой единичный круг со своим собственным преобразованием. В таком случае, как работает сбор лучей. Как я должен отслеживать центральную точку объекта для расчета пересечения лучей. Я действительно ценю любую помощь.

1 Ответ

0 голосов
/ 01 сентября 2011

Вы можете получить текущую матрицу для каждого объекта:

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

При пересечении лучей просто умножьте матрицу объекта на координату локальной точки, чтобы получить ее в абсолютном пространстве, где определен луч.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...