現在地 >> メニュー >> 基本編02 >> キーイベント::まとめコード

問題


ウィンドウを作成し、キーボード処理を行え。

その他条件:
  • 普通のキーは、押した時と離した時のそれぞれで出力をだす
  • 特殊キーは押した時だけでよい
  • キーの繰り返し入力は無視する → 「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

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます