私はOpenGL/GLUTでゲームを開発していますが、ゲームに勝ったときにスコアを表示するために新しいウィンドウを開く必要があります。
これを行うために、を呼び出しglutCreateWindow()
た後、コールバックを呼び出して登録しますmainEventLoop()
。
これに問題はありますか?どうすれば適切にできますか?
私はOpenGL/GLUTでゲームを開発していますが、ゲームに勝ったときにスコアを表示するために新しいウィンドウを開く必要があります。
これを行うために、を呼び出しglutCreateWindow()
た後、コールバックを呼び出して登録しますmainEventLoop()
。
これに問題はありますか?どうすれば適切にできますか?
これに問題はありますか?
はい。
ゲームと同じウィンドウに結果を描画してみませんか?
そもそもなぜGLUTを使っているのですか?これは、ゲームにとってあまり良いフレームワークではありません。GLFWまたはSDLを使用することをお勧めします。
どうすれば適切にできますか?
エンジンに小さなGUIシステムを追加することで、画面に統計(HUDなど)とスコア画面をオーバーレイできます。
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;
}