最終更新: mikk_ni3_92 2008年06月24日(火) 17:10:43履歴
現在地 >> メニュー >> 基本編02 >> キーイベント::まとめコード
ウィンドウを作成し、キーボード処理を行え。
その他条件:
次は >> 基本編03
次は >> 基本編03
ウィンドウを作成し、キーボード処理を行え。
その他条件:
- 普通のキーは、押した時と離した時のそれぞれで出力をだす
- 特殊キーは押した時だけでよい
- キーの繰り返し入力は無視する → 「glutIgnoreKeyRepeat(GL_TRUE)」と指定する
次は >> 基本編03
#include <stdio.h> #include <GL/glut.h> /********* [プロトタイプ宣言] ************/ void display(); void keyboard(unsigned char key, int x, int y); void keyboardup(unsigned char key, int x, int y); void specialkeydown(int key, int x, int y); /************ [ OpenGLの初期設定 ] *****************/ void GLUT_CALL_FUNC() { glutDisplayFunc(display); //描画処理 glutKeyboardFunc(keyboard); glutKeyboardUpFunc(keyboardup); glutSpecialFunc(specialkeydown); } void MY_INIT() { glClearColor(1.0, 1.0, 1.0,1.0); glutIgnoreKeyRepeat(GL_TRUE); //リピートを無視 } /************** [ ここから各種コールバック ] ****************/ void display() { glClear(GL_COLOR_BUFFER_BIT); //カラーバッファをクリアする glFlush(); //バッファのはきだし } void keyboard(unsigned char key, int x, int y) { printf("(%d,%d)で %c が押されました\n",x,y,key); } void keyboardup(unsigned char key, int x, int y) { printf("(%d,%d)で %c が離れました\n",x,y,key); } void specialkeydown(int key, int x, int y) { switch(key) { case GLUT_KEY_UP: puts("↑が押されました"); break; case GLUT_KEY_DOWN: puts("↓が押されました"); break; case GLUT_KEY_RIGHT: puts("→が押されました"); break; case GLUT_KEY_LEFT: puts("←が押されました"); break; } } /**************** ここからメイン関数 ********************/ int main(int argc,char *argv[]) { glutInit(&argc,argv); glutCreateWindow("Hello OpenGL"); GLUT_CALL_FUNC(); //コールバックを登録する関数 MY_INIT(); //各種初期設定 glutMainLoop(); return 0; }
次は >> 基本編03