[解決済み] glutSpecialFuncを正しく使うには?
2022-02-19 03:17:50
質問
次のような場合に、四角が大きくなるようにしたい。 UO が押される。
void displayScene(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0,x,0);
glBegin(GL_QUADS);
glVertex3f(-0.4,-0.4, -5.0);
glVertex3f( 0.4,-0.4, -5.0);
glVertex3f( 0.4, 0.4, -5.0);
glVertex3f(-0.4, 0.4, -5.0);
glEnd();
//x = x + 0.1;
glutSwapBuffers();
}
gluSpecialFuncを使っています。
void ProcessSpecialKeys(unsigned char key, int x, int y)
{
if (key == GLUT_KEY_UP)
{
x = x + 0.1;
}
glutPostRedisplay();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(0,0);
glutCreateWindow("OpenGL Window");
init();
glutDisplayFunc(displayScene);
glutSpecialFunc(ProcessSpecialKeys);
//glutKeyboardFunc(ProcessKeys);
glutMainLoop();
return 0;
}
帰るとき
x+=0.1
の中に
displayScene
を押すと、四角い部分が盛り上がります。
私は
glutSpecialFunc
が間違っているのでしょうか?以前使っていて、普通に使えたからです。何が足りないのでしょうか?
解決方法は?
glutSpecialFunc
は、キーを押している間、連続的に呼び出されることはありません。コールバックは、キーが押されたときに一度だけ呼び出されます。
フリーグラット
が提供する
glutSpecialUpFunc
コールバックは、キーが解放されたときに呼び出されます。
のときに状態を設定します。 UP が押されたときに状態をリセットし 上 を離す。
int main(int argc, char** argv)
{
// [...]
glutSpecialFunc(ProcessSpecialKeys);
glutSpecialUpFunc(ReleaseSpecialKeys);
// [...]
}
int keyUpPressed = 0;
void ProcessSpecialKeys(unsigned char key, int x, int y)
{
if (key == GLUT_KEY_UP)
keyUpPressed = 1;
}
void ReleaseSpecialKeys(unsigned char key, int x, int y)
{
if (key == GLUT_KEY_UP)
keyUpPressed = 0;
}
を変更します。
x
の状態に依存します。
keyUpPressed
. を呼び出すことでシーンを継続的に再描画します。
glutPostRedisplay
で
displayScene
void displayScene(void)
{
if (keyUpPressed)
x += 0.1;
// [...]
glutSwapBuffers();
glutPostRedisplay();
}
関連
-
[解決済み] X リクエストが失敗したときのエラー。BadValue (整数パラメータが操作の範囲外です)
-
[解決済み] OpenGL GLXエクステンションはサポートされていません
-
[解決済み] OpenGL - GLenumはどのように符号なし32ビット整数ですか?
-
[解決済み] Ken Silverman氏のVoxlapエンジンで使用されているアルゴリズムについて、どなたか教えてください。
-
[解決済み] glutSpecialFuncを正しく使うには?
-
[解決済み] OpenGL - glDepthMaskの使い方についての質問です。
-
[解決済み] FOVXの計算(openGL)
-
[解決済み] Linuxでgcc/g++を使用してWindows用にコンパイルする方法は?
-
[解決済み] OpenGLのフレームバッファとレンダーバッファの概念と違いについて教えてください。
-
[解決済み] glActiveTextureとglBindTextureの違いと関係
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] FreeGLUTとGLFWの違いは何ですか?[クローズド]
-
[解決済み] glBlitFramebufferを使用してテクスチャを表示する
-
[解決済み] OpenGL GLXエクステンションはサポートされていません
-
[解決済み] gl_FragColorとout vec4カラーを使用する?
-
[解決済み] gl_PointSizeの動作について
-
[解決済み] glDeleteBuffers()はいつ呼び出すべきですか?
-
[解決済み] FOVXの計算(openGL)
-
[解決済み】OpenGLのテキストレンダリングは、バージョン4.1現在、何が最先端なのでしょうか?[クローズド]。
-
[解決済み] glActiveTextureとglBindTextureの違いと関係
-
[解決済み] OpenGLでglLoadIdentity()は何をするのですか?