2008-12-02 11 views
4

Я работаю над 2D-игрой с использованием OpenGL ES. Я использую орфографическую проекцию, так как это делает 2D-материал простым. Теперь я хотел бы создать простой 3D-эффект, скажем, вращать спрайт вокруг оси Y (что-то вроде потока обложек). Если я правильно понимаю, это невозможно сделать в ортопроекции. Можно ли это сделать, не испортив остальную часть кода? Как переключить проекцию в середине кадра, обработать текущее изображение кадра в качестве фона и нарисовать 3D-материал над фоном?3D-эффекты в 2D-игре с использованием OpenGL

ответ

6

Да, это возможно: просто сохраните старую матрицу проекции, загрузите новую и восстановите старый, когда закончите.

void DrawScene() 
{ 
    Draw2DStuff(); 

    glMatrixMode(GL_PROJECTION); 
    glPushMatrix(); // Save old projection matrix 
    gluPerspective(...); // Load new projection matrix 

    Draw3DStuff(); 

    glMatrixMode(GL_PROJECTION); 
    glPopMatrix(); // Restore old projection matrix 
} 

Просто быть осторожным в буфер глубины - вы, возможно, придется играть с настройками буфера глубины при переключении между режимами 2D и 3D-рендеринга для того, чтобы вещи, чтобы втянуться правильно.