OpenGL / GLUT Создание окна после mainEventLoop ()

Я разрабатываю игру в OpenGL / GLUT, и мне нужно открыть новое окно, чтобы показать счет, когда игра выиграна.

Для этого я позвоню glutCreateWindow() и зарегистрировать обратные вызовы после вызова mainEventLoop(),

Есть ли проблема с этим? Как я должен сделать это правильно?

1

Решение

Есть ли проблема с этим?

Да.

Почему бы вам просто не нарисовать результаты в том же окне, что и игра?

Почему вы используете GLUT в первую очередь? Это не очень хорошая основа для игр. Лучше использовать GLFW или SDL.

Как я должен сделать это правильно?

Добавив небольшую систему графического интерфейса в ваш движок, это позволит вам наложить на экран статистику (например, HUD) и экран оценки.

1

Другие решения

Вам понадобятся две функции обратного вызова дисплея, display( ) а также display2( ) за каждое окно плюс window = glutCreateWindow("Window 1"); а также window2 = glutCreateWindow("Window 2");,

Пример кода:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <GL/glut.h>

int window2 = 0, window = 0, width = 400, height = 400;

void display(void)
{
glClearColor(0.0, 1.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
printf("display1\n");
glFlush();
}

void display2(void)
{
glClearColor(1.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
printf("display2\n");
glFlush();
}

void reshape (int w, int h)
{
glViewport(0,0,(GLsizei)w,(GLsizei)h);
glutPostRedisplay();
}

int main(int argc, char **argv)
{
// Initialization stuff
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB);
glutInitWindowSize(width, height);

// Create  window main
window = glutCreateWindow("Window 1");
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutInitWindowPosition(100,100);

// Create second window
window2 = glutCreateWindow("Window 2");
glutDisplayFunc(display2);
glutReshapeFunc(reshape);

// Enter Glut Main Loop and wait for events
glutMainLoop();
return 0;
}
-2

По вопросам рекламы [email protected]