私は OpenGL の初心者で、生の画像を背景として使用するゲームを作成しようとしています。ゲームの開始時にその画像を表示し、それをクリックして後で別の画像を表示できるようにしたいと考えています。この機能を使用してglutMouseFunc
みましたが、プログラムを実行しようとすると、プログラムが動作を停止したというメッセージが表示されます。これが私のコードの一部です: 私はグローバル変数 onMouse を持っています。マウス ボタンをクリックすると、変数の値は 1 になり、値が 1 の場合は 2 番目の画像を読み込もうとします。
int onMouse;
void mouseClicks(int button, int state, int x, int y) {
if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
onMouse = 1;
}
}
そして、これが主な機能です:
//load first texture
texture = LoadTextureRAW( "2 Lock screen.raw", TRUE );
glutMouseFunc(mouseClicks);
if(onMouse == 1){
//load second texture
texture = LoadTextureRAW( "in_game.raw", TRUE );
}
私は何を間違っていますか?
編集コードにいくつかの変更を加えましたが、背景画像はまだ変更されていません。新しいメイン関数は次のとおりです。
glutCreateWindow("Game");
texture = LoadTextureRAW( "2 Lock screen.raw", 1 );
glutDisplayFunc(display);
glutMouseFunc(mouseClicks);
glutKeyboardFunc(key);
glutMainLoop();
if(onMouse == 1){
texture = LoadTextureRAW( "in_game.raw", 2 );
glutDisplayFunc(display);
}
これは、テクスチャをクワッドにマップする表示関数です。
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
glClear( GL_COLOR_BUFFER_BIT );
// setup texture mapping
glEnable( GL_TEXTURE_2D );
glBindTexture( GL_TEXTURE_2D, texture );
glPushMatrix();
glBegin( GL_QUADS );
glTexCoord2d(1.0,0.0); glVertex3d(1.0,1.0, 1.0);
glTexCoord2d(0.0,0.0); glVertex3d(-1.0,1.0,1.0);
glTexCoord2d(0.0,1.0); glVertex3d(-1.0,-1.0, -1.0);
glTexCoord2d(1.0,1.0); glVertex3d(1.0,-1.0, 1.0);
glEnd();
glPopMatrix();
glutSwapBuffers();
// free the texture
FreeTexture( texture );