정맥주사 시뮬레이터를 개발할 당시의 코드 중 GLUT가 사용된 부분의 일부이다.
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
if (!prefWindowed) {
if (prefRefresh) sprintf(glutGamemode, "%ix%i:%i@%i", prefWidth, prefHeight, prefDepth, prefRefresh);
else sprintf(glutGamemode, "%ix%i:%i", prefWidth, prefHeight, prefDepth);
glutGameModeString(glutGamemode);
glutEnterGameMode();
} else {
glutInitWindowSize(prefWidth, prefHeight);
glutCreateWindow(argv[0]);
}
디스플레이모드 뭐 저런거 따로 써야겠나 - 스킵
glutGameModeString(const char *string);
string으로 들어온 문자를 보고 그 문자에 맞는 게임모드를 세팅한다
그러니까 그 말인 즉, 전체화면, 화면의 가로세로 픽셀, 픽셀색상 깊이, 비디오 주기를 설정한다.
그러니까 저 위에 prefWidth, prefHeight, prefDepth, prefRefresh가 glutGameMode에 들어가는거다!
int glutEnterGameMode(void);
void glutLeaveGameMode();
게임모드로 들어가고(enter), 나간다(leave).
아주 고성능의 glut 풀스크린 렌더링을 제공한다 라고 써있지만 아주 고성능인지는 모르겠고
glutInitWindowSize(int widthsize, int Heightsize);
윈도우의 크기 지정 ㅇㅋ?
int glutCreateWindow(char *name);
name으로 들어온 인자가 바로 윈도우 이름이 된다.
윈도우를 생성한다.
결국 위의 소스는 prefWindowed가 True면 윈도우형으로 만들고 False면 전체화면으로 만드는 것이다.
glutSwapBuffers();
숨겨져있던 히든버퍼의 화면과 현재 화면을 교체한다.
교체된 현재화면은 바로 히든버퍼로 변경되고 이 두 버퍼는 서로 교환해가며 부드러운 애니메이션을 해내게 된다.
한 프레임을 마치면 어련히 등장하는 함수라고 생각하면 된다.
glutIdleFunc(void (*)(void) func);
아무 이벤트가 없을 때 호출되는 함수
여기서 메인루프가 시작된다
mainLoop 메서드
아무 이벤트가 없을 때 호출되는 메인루프다 - 정맥주사 시스템 코드
glutGet(GLenum type);
- 각종 glut 관련 거시기들을 가져온다ㅋㅋㅋ아놔 거시기 뭐 표현할 방법이 없네
- 너비, 높이, 시간 등등등을 가져올 수 있다.
- type : 이게바로 그 거시기 아... 뭐라해야하나 마땅한 표현이 생각이 안나는데
- ms = glutGet(GLUT_ELAPSED_TIME);
* ms 변수에 glut가 실행후 경과된 시간을 넣는다
glutPostRedisplay(void);
- 현재 창 다시 출력, 새로고침
'Graphics > OpenGL' 카테고리의 다른 글
glModelView Matrix (0) | 2014.05.27 |
---|---|
glPush, PopMatrix, Ortho 등 (0) | 2014.05.27 |
OpenGL 기초 - GLUT : Win32 예제 (0) | 2014.05.27 |
OpenGL 기초 - GLUT : 애니메이션 (0) | 2014.05.27 |
OpenGL 기초 - GLUT : 팝업메뉴 (0) | 2014.05.27 |