가장 간단한 도형 그리기


Visual Studio에 OpenGL 환경 설치 글 ( http://blog.amaorche.com/20 )의 예제소스코드를 다시 보자.

#include "gl/glut.h" void display() { glBegin(GL_POLYGON); glVertex2f(-0.5f, -0.5f); glVertex2f(0.5f, -0.5f); glVertex2f(0.5f, 0.5f); glVertex2f(-0.5f, 0.5f); glEnd(); glFinish(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutCreateWindow("OpenGL"); glutDisplayFunc(display); // 여기서 그릴 함수를 넣어준다. glutMainLoop(); return 0; }

코드는 display 함수와 main 함수로 이루어져 있다.


먼저 main 함수를 보면, glut을 접두사로 붙이는 함수들이 있다. 

먼저 초기화 함수인 glutInit()을 해주고, 

새 창을 만드는 glutCreateWindow()를 해준다. 함수 전달인자에 있는 "OpenGL"은 새로 만들어지는 창 이름이다.


그 다음, 실제로 그리는 함수인 glutDisplayFunc()에서 우리가 필요한 그림을 그릴 수 있다. 함수 전달인자로, 그림을 그리는 함수를 넣어준다. 소스코드에서는 main 함수 위의 display 함수를 전달인자로 넘겨준다.


자, 그럼 다시 display 함수를 보자. 모든 함수 앞에는 gl이라는 접두사가 붙는다.


void display() {
	glBegin(GL_POLYGON);
	glVertex2f(-0.5f, -0.5f);
	glVertex2f(0.5f, -0.5f);
	glVertex2f(0.5f, 0.5f);
	glVertex2f(-0.5f, 0.5f);
	glEnd();
	glFinish();
}


간단하게 순차적으로 설명하자면, 이미 그려져 있는 것이 있다면 Clear로 깨끗하게 지운다. 그다음 Begin으로 시작하여 End까지, 그리고자 하는 도형 정보를 넣는다. 위 예제에서는 다각형을 그리는데, 


(-0.5,-0.5)

(0.5,-0.5)

(0.5,0.5)

(-0.5,0.5)


를 꼭지점으로 가지는 다각형(사각형)을 그린다.


여기서 다른 모양을 그리고 싶으면, Begin의 전달인자에 그리고자 하는 도형을 정하고 각 꼭지점 위치정보를 glVertex(x좌표,y좌표) 형태로 추가한다. 이때, openGL 창 정중앙이 (0,0)이다. 기본 도형의 glBegin 전달인자와 꼭지점 개수 조건은 다음과 같다.


점 : GL_POINTS , 꼭지점 개수조건 없음

선 : GL_LINES, 꼭지점 은 짝수개 있어야 함. 연결되지 않은 점은 그리지 않음

삼각형 : GL_TRIANGLES, 꼭지점은 3배수로 있어야 함. 3배수가 안되는 나머지 1~2개의 점은 그리지 않음

사각형 : GL_QUADS, 꼭지점은 4배수로 있어야 함, 4배수가 안되는 나머지 1~3개의 점은 그리지 않음

다각형 : GL_POLYGON 꼭지점은 2개 이상 (최소 삼각형을 그릴 수 있어야 함)



점 그리기


점은 Begin ~ End 사이에 있는 Vertex 수 만큼 그릴 수 있다. 점 크기를 조절하려면 glPointSize 함수를 사용하면 된다. 전달인자에 점 지름을 float로 넣을 수 있다.


glPointSize(10.0);
glBegin(GL_POINTS);
glVertex2f(-0.5f, -0.5f);
glVertex2f(0.5f, -0.5f);
glVertex2f(0.5f, 0.5f);
glVertex2f(-0.5f, 0.5f);
glEnd();
glFinish();




선 그리기


선은 GL_LINES 으로 그릴 수 있다. 꼭지점은 꼭 2배수로 있어야 한다. 홀수이면, 마지막 꼭지점은 무시된다. 선 두께를 조절하려면 glPointSize 함수를 사용하면 된다. 전달인자에 두께 픽셀 크기를 float로 넣을 수 있다.


glLineWidth(10.0);
glBegin(GL_LINES);
glVertex2f(-0.5f, -0.5f);
glVertex2f(0.5f, -0.5f);
glVertex2f(0.5f, 0.5f);
glVertex2f(-0.5f, 0.5f);
glEnd();
glFinish();








삼각형 그리기


삼각형은 GL_TRIANGLES 로 그릴 수 있다. 꼭지점은 3개가 꼭 있어야 한다. 순차적으로 3개씩 짝지어 내려갔을 때 남는 1개 또는 2개의 꼭지점은 그리지 않는다.


 	
glBegin(GL_TRIANGLES);
glVertex2f(-0.5f, -0.5f);
glVertex2f(0.5f, -0.5f);
glVertex2f(0.5f, 0.5f);
glEnd();



사각형 그리기


사각형은 GL_QUADS로 그릴 수 있다. 꼭지점은 4개가 있어야 하고, 마찬가지로 마지막 3개 이하의 꼭지점은 무시된다. 또한, 점의 방향 (반시계 또는 시계)을 유지해야 한다. 

	
glBegin(GL_QUADS);
glVertex2f(-0.5f, -0.5f);
glVertex2f(0.5f, -0.5f);
glVertex2f(0.5f, 0.5f);
glVertex2f(-0.5f, 0.5f);
glEnd();
glFinish(); 



다각형 그리기


기타 다각형은 GL_POLYGON으로 그릴 수 있다. 꼭지점은 최소 3개 이상이 있어야 한다.


glBegin(GL_POLYGON);
glVertex2f(-0.5f, -0.5f);
glVertex2f(0.5f, -0.5f);
glVertex2f(0.5f, 0.0f);
glVertex2f(0.0f, 0.5f);
glVertex2f(-0.5f, 0.0f);
glEnd();
glFinish();



'OpenGL' 카테고리의 다른 글

OpenGL 원 그리기  (1) 2016.09.21
OpenGL freeglut Visual Studio 설치 방법  (2) 2016.09.06
Posted by 딕스트라
,