最終更新: mikk_ni3_92 2008年10月30日(木) 10:35:28履歴
現在地 >> メニュー >> 基本編18 >> 基本編18::まとめコード2
関連:基本編18::まとめコード1
関連:基本編18::まとめコード1
#include <iostream> #include <GL/glut.h> //--------- プロトタイプ宣言 ----------// void display(); void menu(int val); void sub_menu_1(int val); void sub_menu_2(int val); //------------- OpenGLの初期設定 -------------------// void GLUT_INIT() { glutInitDisplayMode(GLUT_RGBA); glutCreateWindow("Pop Up Sub Menu"); } void GLUT_CALL_FUNC() { glutDisplayFunc(display); } void GLUT_SET_MENU() { int MENU_ID[2]; //サブメニュー1 MENU_ID[0] = glutCreateMenu(sub_menu_1); glutAddMenuEntry("sub 1_1", 1); glutAddMenuEntry("sub 1_2", 2); //サブメニュー2 MENU_ID[1] = glutCreateMenu(sub_menu_2); glutAddMenuEntry("sub 2_1", 1); glutAddMenuEntry("sub 2_2", 2); //ここから、メインメニューの並び glutCreateMenu(menu); glutAddSubMenu( "Sub menu part 1", MENU_ID[0] );//サブメニューとして設定 glutAddMenuEntry("name 1", 1); glutAddMenuEntry("name 2", 2); glutAddMenuEntry("name 3", 3); glutAddSubMenu( "Sub menu part 2", MENU_ID[1] );//サブメニューとして設定 glutAttachMenu(GLUT_RIGHT_BUTTON); } void MY_INIT() { glClearColor(0.0, 0.0, 1.0, 1.0); } //----------- ここからメイン関数 -----------------// int main(int argc, char **argv) { glutInit(&argc,argv); GLUT_INIT(); GLUT_CALL_FUNC(); GLUT_SET_MENU(); MY_INIT(); glutMainLoop(); return 0; } //------------- ここから各種コールバック -----------------// void display() { glClear(GL_COLOR_BUFFER_BIT); glFlush(); } //ここからメニュー関係 void menu(int val) { std::cout <<"name "<< val <<" click!\n"; } //サブメニュー1関係 void sub_menu_1(int val) { std::cout <<"sub menu 1_" <<val<<"\n"; } //サブメニュー2関係 void sub_menu_2(int val) { std::cout <<"sub menu 2_"<< val<<"\n"; }