About
Contents
STL
Android
Eigen
enchant.js
Firefox OS
OpenGL
OpenGL ES 2.0
pukiwiki
UE4
Unity
Windows Phone
Xamarin
Materials Link
その他
PR
STL
Android
Eigen
enchant.js
Firefox OS
OpenGL
OpenGL ES 2.0
pukiwiki
UE4
Unity
Windows Phone
Xamarin
キーボードのR、G、B キーを押すと画面の色が変わる様にします。
KeyboardCallBack 関数を登録して、キーボードの入力状態を得ます。
// ディスプレイコールバック void displayCallBack() { // 画面クリア。 glClear( GL_COLOR_BUFFER_BIT ); // ダブルバッファ交換。 glutSwapBuffers(); } // キーボード入力用コールバック void KeyboardCallBack( unsigned char _key, int _x, int _y ) { switch( _key ) { case 'r': glClearColor( 1.0, 0.0, 0.0, 1.0 ); break; case 'g': glClearColor( 0.0, 1.0, 0.0, 1.0 ); break; case 'b': glClearColor( 0.0, 0.0, 1.0, 1.0 ); break; case '\033': // ESC glClearColor( 1.0, 1.0, 1.0, 1.0 ); break; default: break; } // ディスプレイコールバック呼び出し。 glutPostRedisplay(); } // メイン int main( int argc, char *argv[] ) { // GLUTの初期化 glutInit( &argc, argv ); // ウィンドウの位置を指定。 glutInitWindowPosition( 100, 100 ); // ウインドウサイズ指定 glutInitWindowSize( 640, 480 ); // ウインドウの表示モード指定 glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA ); // ウインドウ生成 glutCreateWindow( argv[0] ); // 画面の初期色設定。 glClearColor( 1.0, 1.0, 1.0, 1.0 ); // コールバック関数の登録。 glutDisplayFunc( displayCallBack ); // ディスプレイ。 glutKeyboardFunc( KeyboardCallBack ); // キーボード // メインループ glutMainLoop(); return 0; }
GLUTでは5キー以上の同時入力を受け付けないので、Windows環境であればWindowsAPI を利用した方が良い。
// アイドル時用コールバック void IdleCallBack() { if( GetAsyncKeyState('R') & 0x8000 ) { glClearColor( 1.0, 0.0, 0.0, 1.0 ); } else if( GetAsyncKeyState('G') & 0x8000 ) { glClearColor( 0.0, 1.0, 0.0, 1.0 ); } else if( GetAsyncKeyState('B') & 0x8000 ) { glClearColor( 0.0, 0.0, 1.0, 1.0 ); } else if( GetAsyncKeyState(VK_ESCAPE) & 0x8000 ) { glClearColor( 1.0, 1.0, 1.0, 1.0 ); } // ディスプレイコールバック呼び出し。 glutPostRedisplay(); } // メイン int main( int argc, char *argv[] ) { // GLUTの初期化 glutInit( &argc, argv ); // ウィンドウの位置を指定。 glutInitWindowPosition( 100, 100 ); // ウインドウサイズ指定 glutInitWindowSize( 640, 480 ); // ウインドウの表示モード指定 glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA ); // ウインドウ生成 glutCreateWindow( argv[0] ); // 画面の初期色設定。 glClearColor( 1.0, 1.0, 1.0, 1.0 ); // コールバック関数の登録。 glutDisplayFunc( displayCallBack ); // ディスプレイ。 glutIdleFunc( IdleCallBack ); // アイドル。 // メインループ glutMainLoop(); return 0; }