在mainEventLoop()之后的OpenGL / GLUT创建窗口

时间:2012-11-11 12:40:00

标签: c++ opengl glut freeglut glutcreatewindow

我正在使用OpenGL / GLUT开发游戏,我需要打开一个新窗口来显示游戏获胜时的分数。

为了做到这一点,我会在致电glutCreateWindow()后致电mainEventLoop()并注册回调。

这有问题吗?我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

  

这有问题吗?

为什么不简单地将结果绘制在与游戏相同的窗口中?

为什么你首先使用GLUT?这不是一个非常好的游戏框架。更好地使用GLFW或SDL。

  

我该怎么做呢?

通过在您的引擎中添加一个小型GUI系统,您可以使用统计信息(如HUD)和分数屏幕覆盖屏幕。

答案 1 :(得分:-2)

每个窗口加上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;
}