У меня должна быть программа OpenGL, работающая с двумя областями просмотра. В одном из них у меня должна быть модель вертолета с рабочей камерой, которая вращается вокруг нее в разные стороны. Прежде, чем я решил получить разделение области просмотра, я заставил камеру работать над моделью, поскольку это было более высоким приоритетом. В другом окне просмотра должен отображаться счетчик FPS, но по какой-то причине я могу видеть текст только под определенными углами.
Мой код выглядит следующим образом:
//sets up the viewports
void setView(int option)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
switch (option)
{
case 1:
glViewport(0,height-150,width,150);
break;
case 2:
glViewport(0,0,width,height-150);
break;
}
if(persp)
gluPerspective(fovy, (GLfloat) width /(GLfloat) height , near, far);
else
glOrtho(left,right,bottom,top,-10,10);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
myCam.updateLook();
}
void writeBitmapString(void *font, char *string)
{
char *c;
for (c = string; *c != '\0'; c++) glutBitmapCharacter(font, *c);
}
//main draw function
void display(void)
{
//Text portion of the window
setView(1);
glColor3f(1.0, 0.0, 0.0);
glRasterPos3f(0, 0, 0.0);
writeBitmapString((void*)font, "Test text");
glutSwapBuffers();
//Viewport for heli
setView(2);
glEnable(GL_DEPTH_TEST);
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
//....The rest is just the modelling stuff
glPopMatrix(); // final pop clause
glFlush();
glutSwapBuffers();
Любая помощь будет принята с благодарностью.
Это действительно звучит так, как будто вы хотите HUD здесь (простите за двойное угадывание ваших намерений). Визуализируйте свою сцену, затем выполните glLoadIdentity для обоих видов модели. & проекционные матрицы. Затем загрузите ваш glOrtho. Наконец, установите растровые позиции для вашего текста и визуализации.
Других решений пока нет …