opengl을 사용하기 위한 기본 setting 하기
- visual studio project를 생성해 solution을 생성한다.
- 솔루션 탐색기에서 project를 우클릭해 프로젝트의 속성을 바꿔야한다.
- 일반 -> 출력 디렉터리 -> $(SolutionDir)\bin\x64\
생성되는 exe 파일은 freeglut.dll과 같은 폴더에 있어야 하기 때문에- 링커 -> 일반 -> 추가 라이브러리 디렉터리 -> .\lib\x64
freeglut.lib 를 사용하기 위해- 링커 -> 입력 -> 추가 종속성 -> freeglut.lib; 맨 앞에 추가
freeglut.lib 를 사용하기 위해- 제일 중요한 freeglut 폴더를 생성된 프로젝트 폴더로 복사해야한다!!!
#include <iostream>
#include".\include\GL\freeglut.h"
//전역 변수
int Width = 600, Height = 600;
void Render(); //화면을 그릴 때 자동으로 호출되는 함수
void Reshape(int w, int h);//윈도우가 처음 생성되거나 크기가 변할 때 자동으로 호출되는 함수
int main(int argc, char** argv) //argc는 인자의 개수 argv는 인자의 이름
{
// Freeglut 초기화
glutInit(&argc, argv);
// 윈도우 크기 조정
glutInitWindowSize(Width, Height);
//칼라버퍼의 속성 지정
glutInitDisplayMode(GLUT_RGB);
//윈도우 생성
glutCreateWindow("Hello OpenGL");
//콜백 함수 등록
glutDisplayFunc(Render);
glutReshapeFunc(Reshape); //콜백함수(윈도우 시스템으로 인해 내가 호출하지 않아도 알아서 호출)
//메세지 처리 루프 진입
glutMainLoop();
return 0;
}
void Render() {
// R,G,B로 색상 설정 가능
glClearColor(1.0f, 0.0f, 1.0f, 1.0f);
여기서 glClearColor 함수의 인자 중 하나인 1.0f는 알파 채널 값을 나타낸다.
RGBA (빨강, 녹색, 파랑, 알파) 형식으로 색상을 표현하며,
각 채널은 0부터 1까지의 부동소수점 값으로 표현된다.
- 빨강 (Red): 1.0f은 최대 빨강 값을 나타낸다.
- 녹색 (Green): 0.0f은 녹색을 나타내지 않음을 나타낸다.
- 파랑 (Blue): 1.0f은 최대 파랑 값을 나타낸다.
- 알파 (Alpha): 이 값은 투명도를 나타낸다.
1.0f은 완전히 불투명한 색상을 나타내며,
0.0f은 완전히 투명한 색상을 나타낸다.
//칼라버퍼 초기화
glClear(GL_COLOR_BUFFER_BIT);
//관측공간 지정(좌표계)
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-10.0, 10.0, -10.0, 10.0);
//모델링 좌표계 설정(좌표계를 이용해서 그리기
glMatrixMode(GL_MODELVIEW);
//빨간색 삼각형 그리기
glColor3d(1.0, 0.0, 0.0);
glBegin(GL_TRIANGLES);
glVertex2d(-2.0, -1.0);
glVertex2d(2.0, -1.0);
glVertex2d(0.0, 3.0);
glEnd();
//파란색 삼각형 그리기
glColor3d(0.0, 0.0, 1.0);
glBegin(GL_TRIANGLES);
glVertex2d(-2.0, 1.0);
glVertex2d(0.0, -3.0);
glVertex2d(2.0, 1.0);
glEnd();
//X축 그리기
glColor3d(0.0, 0.0, 0.0);
glBegin(GL_LINES);
glVertex2d(-10.0, 0.0);
glVertex2d(10.0, 0.0);
glEnd();
//Y축 그리기
glColor3d(0.0, 0.0, 0.0);
glBegin(GL_LINES);
glVertex2d(0.0, 10.0);
glVertex2d(0.0, -10.0);
glEnd();
glutSwapBuffers();
}
void Reshape(int w, int h) {
//관측공간을 윈도우에 매핑
glViewport(0, 0, w, h);
Width = w;
Height = h;
}
❗ 여기서 2번째 줄인 #include".\include\GL\freeglut.h" 에 자신의 경로를 잘 설정해야 한다.
실행화면
위 코드에서 빌려오자면
glColor3d(1.0, 0.0, 0.0); --- r,g,b를 이용해 색상을 정해준다.
glBegin(GL_TRIANGLES); --- 위 사진에서 원하는 도형을 골라주면 된다.
glVertex2d(-2.0, -1.0); --- 자신이 그리고 싶은 위치에 좌표를 설정해준다.
glVertex2d(2.0, -1.0);
glVertex2d(0.0, 3.0);
glEnd(); --- 도형을 그릴 때는 항상 glBegin와 glEnd();을 시작과 끝에 써줘야 한다.
❗ 이때 라인함수, 다각형함수를 잘 이용해야 한다.
ex) 라인함수
ex) 다각형 함수
4. 마무리
오늘은 간단하게 opengl 세팅과 기본 도형 그리는 법을 알아보았고 다음에는 opengl에서 정말 중요한 래스터화(Rastreization) 기법에 대해 알아보자!