スタートメニュー画面を含むopenGlでゲームを作成しています。問題は、ゲームの開始ボタン(テクスチャ画像)をクリックするとゲームが正常に開始されますが、ウィンドウのサイズを変更してからゲームの開始ボタンをクリックすると、テクスチャ画像の座標が変更され、ゲームが変更されませんでした。ウィンドウのサイズ変更後に画像座標を変更しないようにする方法を開始します。
これが私のマウス機能です
void mouseClick (int button, int state, int x, int y)
{
if (!menu)
{
xMin = 300, xMax = 400, yMin = 350, yMax = 400;
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
{
y = height - y;
if (x >= xMin && x <= xMax && y >= yMin && y <= yMax)
{
printf_s("starting 2d Game ");
}
}
}
}
これが私のテクスチャ画像コードです
glBegin(GL_QUAD_STRIP);
glTexCoord2f(0, 0);
glVertex2f(300, 350);
glTexCoord2f(1, 0);
glVertex2f(400, 350);
glTexCoord2f(0, 1);
glVertex2f(300, 400);
glTexCoord2f(1, 1);
glVertex2f(400,400);
glEnd();
glFlush();
これが私の行列射影コードです:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//gluOrtho2D(0.0, 640.0, 0.0, 440);//dino window
gluOrtho2D(0.0, 640.0, 0.0, 440);//dino window
//gluOrtho2D(1.0, 1.0, 1.0,1.0);//house window
//gluOrtho2D(1.0, 1.0, 1.0, 1.0);//bird window
glViewport(0, 0, width, height);
//glViewport(220, 100, 100, 200);
実際、変化しているのはマウスのクリック座標です。マウスのクリック位置(x、y)をビューポート座標から描画座標(つまりOrtho2D座標)に変換する必要があります。
仮定するwidth
と、height
ウィンドウのサイズが変更されるたびに、変数がシステムによって提供され、以下のことを試してみてください。
x = x/width * 640;
y = (height -y) / height * 440;
次に、ボタンの境界をテストします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加