Menu & SubMenu 생성

Posted by 백창
2014. 10. 9. 21:53 개발/Open GL
반응형


 개요

 

OpenGL에서 마우스 오른쪽 버튼을 누르면 나타나는 메뉴를 만들어보자.



 핵심코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
void MyMainMenu(int entryID) {
    if (entryID == 1)       exit(0);
 
    glutPostRedisplay();
}
 
/**
* Sphere Size Menu
*/
void SphereSizeMenu(int entryID) {
    if (entryID == 1){
        IsShape = 1;
        IsSmall = true;
    }
    else if (entryID == 2){
        IsShape = 1;
        IsSmall = false;
    }
    glutPostRedisplay();
}
 
 
void MyInit() {
    glClearColor(1.0, 1.0, 1.0, 1.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
 
    glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
 
    /**
    * Sphere Size Menu
    */
    GLint SpereSizeID = glutCreateMenu(SphereSizeMenu);
    glutAddMenuEntry("Small Sphere", 1);
    glutAddMenuEntry("Large Sphere", 2);
 
 
    /**
    * Show the Menu
    */
    GLint MyMainMenuID = glutCreateMenu(MyMainMenu);
    glutAddSubMenu("Draw Sphere", SpereSizeID);
    glutAddSubMenu("Draw Torus", TorusSizeID);
    glutAddSubMenu("Draw Teapot", TeapotSizeID);
    glutAddSubMenu("Change Color", ChangeColorID);
}


위 코드와 같이 메뉴를 설정해주는 함수를 만들고 마지막 부분에 다시 출력해주는 glutPostRedisplay() 함수를 사용해준다.


 그리고 초기화 과정에서 방금 사용한 함수를 호출하고 메뉴 또는 서브메뉴를 추가해주면 된다.



 결과

 


마우스 오른쪽 버튼을 누르면 다음 메뉴들이 나오고 서브 메뉴도 나온다



변경된 화면

반응형

'개발 > Open GL' 카테고리의 다른 글

정육면체 그리기  (0) 2014.11.21
도형 그리기 및 이동  (0) 2014.11.03
[빌드 오류] failure during conversion to COFF: file invalid or corrupt  (0) 2014.10.17
freeglut API 설치  (0) 2014.09.29
Open GL 설치  (0) 2014.09.12