Saturday, April 4, 2015

OpenGL GLUT 예제

// GlutEmpty.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <Windows.h>
#include <gl/GL.h>
#include "gl/glut.h"

static const char *myProgramName = "GlutEmpty";
static void display(void)
{
    // 렌더링 전에 칼라버퍼와 깊이버퍼를 지워서 초기화 한다.
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    // 삼각형 하나를 그린다. 아무런 카메라 설정을 하지 않았으므로 화면은 x: -1~1, y: -1~1이고 z=0이다.
    glBegin(GL_TRIANGLES);
    glVertex2f(-0.8, 0.8);
    glVertex2f(0.8, 0.8);
    glVertex2f(0.0, -0.8);
    glEnd();
    // 다그렸으면 아까 GLUT_DOUBLE로 더블 버퍼이므로 프론트버퍼와 백버퍼를 스왑한다.
    glutSwapBuffers();
}
static void keyboard(unsigned char c, int x, int y)
{
    switch (c) {
    case 27: /* Esc key를 누르면 프로그램을 종료 한다. */
        exit(0);
        break;
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    // 윈도우 초기화 한다. 사이즈는 x=400, y=400
    glutInitWindowSize(400, 400);
    // 디스플레이모드를 설정한다. RGB칼라, 더블버퍼, 깊이버퍼
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    // GLUT를 초기화 한다. 나중에 string으로 옵션으로 전체화면 같은 것을 만들수 있으나 나중에 설명.
    // 일단은 main함수에서 받은것을 그대로 사용
    glutInit(&argc, argv);
    // 윈도우를 만든다. 파라미터는 TitleName
    glutCreateWindow(myProgramName);
    // 디스플레이 콜백함수. 렌더링 할때 사용하는 함수
    glutDisplayFunc(display);
    // 키보드 콜백함수. 키보드가 눌렸을 때
    glutKeyboardFunc(keyboard);
    // 클리어 칼라를 지정함. 하늘색으로 지정하자. 렌더링 할때 초기화 칼라로 쓴다.
    glClearColor(0.1, 0.3, 0.6, 0.0);
    glutMainLoop();
    return 0;
}


No comments:

Post a Comment