Programming/openGL2011. 10. 10. 22:29
glut의 메뉴는 context-menu용으로 우클릭을 등록해서 많이 사용하는 타입의 메뉴이다.

아래는 glut의 메뉴관련 함수들의 목록이다.
$ vi /usr/include/GL/freeglut_std.h 
443 /*
444  * Menu stuff, see freeglut_menu.c
445  */
446 FGAPI int     FGAPIENTRY glutCreateMenu( void (* callback)( int menu ) );
447 FGAPI void    FGAPIENTRY glutDestroyMenu( int menu );
448 FGAPI int     FGAPIENTRY glutGetMenu( void );
449 FGAPI void    FGAPIENTRY glutSetMenu( int menu );
450 FGAPI void    FGAPIENTRY glutAddMenuEntry( const char* label, int value );
451 FGAPI void    FGAPIENTRY glutAddSubMenu( const char* label, int subMenu );
452 FGAPI void    FGAPIENTRY glutChangeToMenuEntry( int item, const char* label, int value );
453 FGAPI void    FGAPIENTRY glutChangeToSubMenu( int item, const char* label, int value );
454 FGAPI void    FGAPIENTRY glutRemoveMenuItem( int item );
455 FGAPI void    FGAPIENTRY glutAttachMenu( int button );
456 FGAPI void    FGAPIENTRY glutDetachMenu( int button ); 

사용예는 아래와 같이
menuid = glutCreateMenu(callback); 로 생성을 하고 콜백함수를 등록하며
생성된 메뉴에  glutAdd*() 함수들을 이용해 항목이나 하위 메뉴를 추가하는 형식으로 구성된다.
submenu의 경우에는 생성이 완료된 하나의 메뉴를 현재의 메뉴 아래에 추가하는 것이기 때문에
예제처럼 하위 메뉴를 먼저 생성하고 메인 메뉴를 생성한뒤 하위 메뉴를 추가해주어야 한다.
static int mainMenu, displayMenu;

void MenuCallback(int value)
{
	switch (value)
	{
		case 99:
			exit(0);
			break;

		default: 
			break;
	}
}
 
void glutinit_contextmenu()
{
	displayMenu = glutCreateMenu(MenuCallback);
		glutAddMenuEntry("Wireframe", 0);

	mainMenu = glutCreateMenu(MenuCallback);
		glutAddSubMenu("Display", displayMenu);
		glutAddMenuEntry("Exit", 99);
		glutAttachMenu(GLUT_RIGHT_BUTTON);
}
[링크 : http://linux.die.net/man/3/glutcreatemenu]
[링크 : http://linux.die.net/man/3/glutattachmenu]
[링크 : http://linux.die.net/man/3/glutaddmenuentry]
[링크 : http://linux.die.net/man/3/glutaddsubmenu]

'Programming > openGL' 카테고리의 다른 글

gluUnProject / glRenderMode(GL_SELECT)  (0) 2011.10.19
glNormal()  (0) 2011.10.18
glutAttachMenu()의 Linux용 버그  (2) 2011.10.10
GLUT에서 더블클릭은 음..  (0) 2011.10.10
openglut / freeglut 무슨 사이야?  (0) 2011.10.09
Posted by 구차니