🔺
GLUT Tutorials
  • Introduction
  • GLUT 설정
  • GLUT 초기화
  • 윈도우 크기 변화에 대응하기
  • 애니메이션
  • 키보드입력
  • 키 입력 예제 : 세상을 둘러 보아요~ :)
  • 키 입력 예제 : 세상을 둘러 보아요~ 2 탄:)
  • 마우스처리
  • 팝업메뉴의 소개
  • 서브(sub, 하위)메뉴
  • 메뉴 수정하기
  • 메뉴 교체하기
  • 비트맵폰트
  • 비트맵폰트와 직교투영
  • 외곽선 폰트
  • 초당프레임수(FPS) 계산하기
  • 게임모드에 대해서
  • 보조창(subwindow)에 대해서
  • 보조창의 크기변환 처리
  • 여러 보조창에 렌더링하기
Powered by GitBook
On this page

Was this helpful?

서브(sub, 하위)메뉴

앞장에서 우리는 간단한 메뉴를 만드는 방법과 메뉴항목을 선택했을 때 일어나는 이벤트를 처리하는 방법에 대해서 알아보았습니다. 이번 장에서는 서브메뉴를 추가하는 방법에 대해서 알아보겠습니다. 서브메뉴는 메뉴를 만들때 사용했던 것과 같은 함수로 만듭니다. 그래서 앞장에서 보았듯이 glutCreateMenu 함수를 사용해서 메뉴를 만들듯 서브메뉴를 만듭니다. 그런 다음에 glutAddSubMenu 함수를 사용해서 메뉴에 서브메뉴 항목을 추가하는 것입니다.

void glutAddSubMenu(char *entryName, int menuIndex); 

인자설명:
entryName - 메뉴의 항목중에 서브메뉴의 이름입니다.
menuIndex - 서브메뉴의 인덱스값입니다. 이 값은 서브메뉴를 만들기 위해서 glutCreateMenu 를 호출했을 때 반환되는 값입니다.

이 함수는 메뉴의 끝에 항목을 추가합니다. 그리고 그 항목을 선택했을 때, 서브메뉴가 나타나게 됩니다. 다음에 나오는 코드는 위의 함수의 사용을 나타낸 코드입니다.

void createGLUTMenus()
{
    int menu,submenu;
    submenu = glutCreateMenu(processMenuEvents);
    glutAddMenuEntry("Red",RED);
    glutAddMenuEntry("Blue",BLUE);
    glutAddMenuEntry("Green",GREEN);

    menu = glutCreateMenu(processMenuEvents);
    glutAddMenuEntry("White",WHITE);
    glutAddSubMenu("RGB Menu",submenu);
    glutAttachMenu(GLUT_RIGHT_BUTTON);
}

위의 코드를 실행해보면, 마우스의 오른쪽버튼을 눌렀을 때 두 개의 항목이 있는 메뉴가 나타납니다. 첫번째 항목은 "White" 고 두번째 항목은 "RGB Menu" 입니다. 여기서 "RGB Menu" 항목을 누르면 서브메뉴가 나타나게 되고 이 서브메뉴는 "Red", "Green" 그리고 "Blue" 세개의 메뉴항목을 가지고 있습니다.

Previous팝업메뉴의 소개Next메뉴 수정하기

Last updated 5 years ago

Was this helpful?

이 예제에서는 메뉴와 서브메뉴의 이벤트를 처리하는 함수를 같게 설정해 놓았지만 꼭 이렇게 하지 않아도 됩니다. GLUT 는 이벤트처리부분이 각 메뉴마다 분리되어 있든지 아니면 합쳐져있든지 상관하지 않기 때문입니다. 이 프로젝트의 소스코드는 에 있으므로 받아서 실행해 보고 자세하게 살펴보길 바랍니다.

Github