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