Graphics/OpenGL

OpenGL 기초 - 삼각형 출력하기

MOLOKINI 2014. 5. 16. 16:28
삼각형을 띄워보겠습니다
 
여러가지 방법이 있지만,,
콘솔과 윈도우창에서 사용하는 방법만 간단하게 해보도록 하겠습니다
 
1. 콘솔

 

새 프로젝트를 만드는 방법 정도야 아실것이구요, 콘솔 클릭하시고 솔루션 이름을 정합니다.

 

 

 

 

역시 빈파일 하나 만드는 정도는 읽으시는 분에 대한 예의가 아니므로 패스

 

 

 

코드를 작성해보겠습니다

 

 

#include <gl/glut.h>

 

void DoDisplay()

{

glClear(GL_COLOR_BUFFER_BIT);

 

glBegin(GL_TRIANGLES);  

  // 그리기 시작!

glVertex2f(0.0, 0.5);

glVertex2f(-0.5, -0.5);

glVertex2f(0.5, -0.5);          

 // 정점정의 : 아래서 따로 설명드리겠습니다

glEnd();                          

  // 그리기 끝!

glFlush();                        

  // 그래픽카드로 그린내용을 보낸다!

}

 

void main()

{

glutCreateWindow("OpenGL");

 // OpenGL 윈도우 생성 (인수는 타이틀바 제목)

glutDisplayFunc(DoDisplay);  

  // 그리기 전달함수 (인수는 그리기메서드)

glutMainLoop();                    

 // 프로그램이 종료될 때까지 루프

}

 

이게 다입니다.

코드도 짧으니 당연히 결과물도 짧겠죠? (모두가 그런것은 아니지만요)

 

2. 윈도우

 

윈도우라고 콘솔에 비해서 크게 다를건 없지만 어쨋든 다르긴 다릅니다.

 

 

당연히 Win32 윈도우 프로젝트를 만들어주고......

 

비어있는 c++파일 만들어주고,,

 

코드를 작성합니다.

 

 

#include <windows.h>

#include <gl/glut.h>

 

void DoDisplay()

{

glClear(GL_COLOR_BUFFER_BIT);

 

glBegin(GL_TRIANGLES);

glVertex2f(0.0, 0.5);

glVertex2f(-0.5, -0.5);

glVertex2f(0.5, -0.5);

glEnd();

glFlush();

 

}

 

int APIENTRY WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,

LPSTR lpszCmdParam, int nCmdShow)

{

glutCreateWindow("OpenGL");

glutDisplayFunc(DoDisplay);

glutMainLoop();

return 0;

}

 

다른점이 있다면 핵심 코드는 같고, 윈도우를 사용하기 위해서 

진입점이 WinMain으로 바뀌고, WinMain을 사용하기 위해서 windows.h 헤더를 추가한것밖에 다른게 없습니다.

 

콘솔로 하면 창이 두개(콘솔 + 결과창)뜨는데, 윈도우프로젝트로 하면 결과창 하나만 뜨니까 어쨋든.

 

윈도우는 윈도우에서만 사용되는거니까, 리눅스나 매킨토시에서는 WinMain을 Main으로 바꿔주면 됩니다, 저는 안드로이드용 증강현실을 위해 공부하는 것이니 앞으로는 콘솔로 하게 될 것 같아요.

 

그렇다고 윈도우에서 못하는건 아닙니다!!ㅋㅋ

 

정점정의

 

 

화면의 정중앙이 0.0이고요

X축은 오른쪽으로, Y축은 위쪽으로 증가합니다

 

Vertex2f로 정의한 세개의 점이 정의되어 있구 이 세 점을 연결하여 삼각형을 그려줍니다.

'Graphics > OpenGL' 카테고리의 다른 글

OpenGL 기초 - 상태머신, 버전조사  (0) 2014.05.16
OpenGL 기초 - 색상변경  (0) 2014.05.16
OpenGL 기초 - 기본타입, 함수형식  (0) 2014.05.16
OpenGL 라이브러리 설치  (0) 2014.05.16
OpenGL과 OpenGL ES  (0) 2014.05.16