OpenGL 실습 1주차
OpenGL 실습내용 실습 1주차 실습 2주차 실습 3주차 실습 4주차 초기화 및 점, 선, 면 Color Cube 만들기 이동, 회전, 크기변경 실습 4주차 광원 및 재질
GLUT install GLUT.H GLUT.lib GLUT32.lib GLUT.dll GLUT32.dll c:\Program Files\Microsoft Visual Studio\vc98\Include\ c:\Program Files\Microsoft Visual Studio\vc98\Include\GL\ GLUT.lib GLUT32.lib c:\Program Files\Microsoft Visual Studio\vc98\Lib GLUT.dll GLUT32.dll c:\windows\system32
윈도우 초기화 #include <GL/glut.h> void display(void) { } int main(int argc, char** argv) glutInit ( &argc, argv ); glutInitWindowSize ( 500, 500 ); glutInitWindowPosition ( 0, 0 ); glutCreateWindow ( "윈도우 창을 열자" ); glutDisplayFunc ( display ); glutMainLoop(); 대부분의 비대화식 프로그램에 대하여 동작되는 main 프로그램 glutInit(int *argcp, char **argv) glut 및 OpenGL을 초기화 glutCreateWindow(char *name) 인자 name은 윈도우의 타이틀 glutInitWindowSize ( 500, 500 ); 500 * 500 pixel window glutInitWindowPosition ( 0, 0 ); 설정된 좌표축으로 윈도우 배치 glutDisplayFunc ( display ); 윈도우가 오픈될 때 display call back이 불림 glutMainLoop(); 이벤트 루프에 들어감
윈도우 초기화 결과
윈도우 내부 색 설정 glClear(GL_COLOR_BUFFER_BIT); 윈도우를 클리어 glFlush(); 버퍼들을 클리어 #include <GL/glut.h> void display(void) { glClear(GL_COLOR_BUFFER_BIT); glFlush(); } void init(void) glClearColor(0.0, 0.0, 1.0, 1.0); int main(int argc, char *argv[]) glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA); glutCreateWindow(argv[0]); glutDisplayFunc(display); init(); glutMainLoop(); return 0; glClear(GL_COLOR_BUFFER_BIT); 윈도우를 클리어 glFlush(); 버퍼들을 클리어 glClearColor(GLclampf R, GLclampf G, GLclampf B, GLclampf A) GLclamp R, G, B 각기 RGB값 Glclamp A 에서 A는 α 값으로 투명도를 나타냄 ( 0 : 투명, 1 : 불투명)
윈도우 내부 색 설정 결과
점 그리기 void display(void) { glPointSize(2.0f); glBegin(GL_POINTS); glVertex2d(0.0f, 0.0f); glEnd(); } void glBegin(GLnum mode) glBegin() 의 인자 mode 에는 도형의 타입을 지정 void glEnd(void) 도형을 그리려면, glBegin() ~glEnd() 사이에 도형의 각 정점 좌표치를 설정하는 함수를 기술 glPointSize GL_POINTS로 그리는 점의 크기를 설정, OpenGL에서 지원하는 점의 크기는 0.5에서 10.0까지 사용가능하며, 증가치는 0.125
점 그리기 결과 ( 0.0, 0.0 )
glBegin()의 인자에 사용할 수 있는 값들
선 그리기 void display(void) { glLineWidth(2.0f); glBegin(GL_LINES); glVertex2d(-0.5f, -0.5f); glVertex2d(0.5f, -0.5f); glVertex2d(0.5f, 0.5f); glVertex2d(-0.5f, 0.5f); glEnd(); } glLineWidth : GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP등으로 그릴 라인의 굵기를 설정 ( 0.5 ~ 10.0, +-0.125 )
선 그리기 결과 ( 0.5, 0.5 ) ( -0.5, 0.5 )
Polygon을 사용한 면 그리기 void display(void) { glBegin(GL_POLYGON); glVertex2d(-0.5f, -0.5f); glVertex2d(0.5f, -0.5f); glVertex2d(0.5f, 0.5f); glVertex2d(-0.5f, 0.5f); glEnd(); }
Polygon을 사용한 면 그리기 결과
Color 사각형 그리기 void display(void) { glClear(GL_COLOR_BUFFER_BIT); // 윈도우 클리어 glBegin(GL_QUADS); glColor3f(1.0, 0.0, 0.0); // 적색 glVertex2d(-0.5, -0.5); glColor3f(0.0, 1.0, 0.0); // 녹 glVertex2d(0.5, -0.5); glColor3f(0.0, 0.0, 1.0); // 파 glVertex2d(0.5, 0.5); glColor3f(1.0, 1.0, 0.0); // 황 glVertex2d(-0.5, 0.5); glEnd(); glFlush(); }
Color 사각형 그리기 결과