OpenGL

[OpenGL]GLUT Initializatio

@히테 2017. 6. 24. 23:48

GLUT(OpenGL Utility Toolkit)은 OpenGL로 프로그램을 만들 때 키 입력, 창 생성 등을 도와주는 툴킷임


다음과 같은 순서로 세팅을 할 것임


1. GLUT 속성을 설정하고 창 생성

2. 콜백 등록

3. GLUT 프로세싱 사이클 진입






* GLUT 속성 설정, 창 생성


void glutInit(int *argc, char **argv) : GLUT설정을 초기화하고 윈도우 시스템과 세션을 협상. 초기화가 제대로 안되면 윈도우로 연결 실패, OpenGL 지원 부족 등의 에러 발생

void glutInitWindowPosition(int x, int y) : 창 위치 설정 (안하면 디폴트값 설정됨)

void glutInitWindowSize(int width, int height) : 창 크기 설정  (안하면 디폴트값 설정됨)

void glutInitDisplayMode(unsigned int mode) : 어떻게 창을 그릴 것인지에 대한건데 속성이 굉장히 많음. 예를 들면 GLUT_RGBA, GLUT_DOUBLE 등이 있음. 파라미터는 비트연산자로 입력 (ex. glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);) 옛날에 GLUT_DOUBLE 안써서 프레임이 넘어갈 때 뚝뚝 끊기는거처럼 느낀 적이 있음.. ㅠㅠ

int glutCreateWindow(char *title) : 창 생성, 파라미터로 창 이름을 입력하면 됨, 반환형은 창의 identifier로 나중에 활용 가능





* 콜백 등록


저렇게만 하고 돌리면 콘솔만 뜨고 OpenGL창 안뜸. 그림을 그릴 때 수행할 함수를 콜백으로 등록하고 계속 그려야하기 때문임. 콜백을 등록하고 나면 필요할 때 GLUT가 등록된 콜백함수를 통해 그림을 그려줌


일단 콜백으로 등록할 함수를 만든다



# void glutDisplayFunc(void (*funcName)(void))

얘를 통해서 GLUT한테 그림 그릴 함수를 알려준다



* 이벤트 프로세싱 루프 진입

void glutMainLoop(void)

이 함수를 사용하면 GLUT는 루프에 진입하면서 이벤트를 기다리는 상태가 된다





아래는 최종 코드








다 하고나니 느낀 건데 포스팅하는 시간이 너무 긴 것 같다. 더 빨리하는 방법을 생각해봐야겠다.