1

私はOpenGL/GLUTでゲームを開発していますが、ゲームに勝ったときにスコアを表示するために新しいウィンドウを開く必要があります。

これを行うために、を呼び出しglutCreateWindow()た後、コールバックを呼び出して登録しますmainEventLoop()

これに問題はありますか?どうすれば適切にできますか?

4

2 に答える 2

1

これに問題はありますか?

はい。

ゲームと同じウィンドウに結果を描画してみませんか?

そもそもなぜGLUTを使っているのですか?これは、ゲームにとってあまり良いフレームワークではありません。GLFWまたはSDLを使用することをお勧めします。

どうすれば適切にできますか?

エンジンに小さなGUIシステムを追加することで、画面に統計(HUDなど)とスコア画面をオーバーレイできます。

于 2012-11-11T13:18:12.717 に答える
-2

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;
}
于 2012-11-11T13:30:34.013 に答える