Graphics/OpenGL

glutGameModeString, EnterGameMode 등

MOLOKINI 2014. 5. 27. 15:03

정맥주사 시뮬레이터를 개발할 당시의 코드 중 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