목차 1 컴퓨터그래픽스개요 2 컴퓨터그래픽스영상 3 OpenGL 프로그래밍 이병래교수 / 방송대컴퓨터과학과 컴퓨터그래픽스란? 컴퓨터그래픽스에대한다양한시각 컴퓨터그래픽스란? 교재목차 컴퓨터를이용하여그림을그리거나조작하는기술, 제작된그림 그림을그리거나조작하기위해사용되는컴퓨터기술 제1장제2장 컴퓨터그래픽스의개관 컴퓨터그래픽스소프트웨어 하드웨어기술 입출력장치, 비디오메모리, 그래픽스처리기 소프트웨어기술그래픽스기본요소그리기알고리즘그래픽스객체의이동, 회전, 크기조정등의기하변환 2차원및 3차원뷰잉알고리즘조명및물체의렌더링알고리즘 교재관련부분 : 2 쪽 제3장 컴퓨터그래픽스의기본요소 제4장 그래픽스기본요소의속성 제5장 기하변환 제6장 2차원뷰잉 제7장 3차원뷰잉 제8장 선과면의표현 제9장 가시면결정 제10장조명및표면렌더링
그래픽스시스템의구성 비디오카드 그래픽스처리장치 (GPU, Graphics Processing Unit) 입력장치그래픽워크스테이션출력장치 CPU 시스템메모리 입출력장치 시스템버스 비디오 BIOS GPU 비디오메모리 비디오출력인터페이스 비디오카드 비디오신호출력 교재관련부분 : 21~24 쪽 그래픽스연산의처리를담당하는그래픽스전용보조프로세서 주사변환, 2 차원및 3 차원그래픽스렌더링, 디지털비디오데이터처리등의작업을담당함 비디오메모리 그래픽데이터저장 : 프레임버퍼, 깊이버퍼등 GPU 동작에필요한프로그램및데이터저장 ( 출처 : Wikipedia) 교재관련부분 : 21~24 쪽 비디오카드 비디오출력인터페이스 프레임버퍼에저장된화면을디스플레이장치에출력 디스플레이방식 초기의디스플레이장치 음극선관 (CRT) RAMDAC 비디오출력 : VGA, DVI, HDMI 등 비디오 BIOS 초점맞춤시스템 수직편향판 인광물질코팅스크린 비디오카드의동작을제어하고, 그래픽스소프트웨어와비디오카드가상호동작하기위한인터페이스를제공하는펌웨어형태의기본프로그램 전자총 수평편향판 전자광선 교재관련부분 : 21~24 쪽
디스플레이방식 현재의디스플레이장치 LCD, 플라즈마, OLED 등 디스플레이방식 벡터디스플레이 임의주사디스플레이라고부르기도함 선그리기형태로그림을디스플레이 : 도형을구성하는선분들을하나씩그리는방식 MoveTo(0.6, 0.25) LineTo(0.2, 0.7) LineTo(0.8, 0.5) LineTo(0.6, 0.25) 디스플레이리스트 디스플레이방식 래스터주사디스플레이 한번에한행씩, 위에서아래로스크린을가로질러디스플레이하는방식 디스플레이방식래스터주사디스플레이 픽셀 (pixel) 또는화소 : 디스플레이되는각각의점 프레임 (frame) : 전체스크린영역 픽셀 주사선프레임 재생버퍼 (refresh buffer) 또는프레임버퍼 (frame buffer) : 한프레임의픽셀값들을저장하는버퍼 해상도 (resolution) : 디스플레이장치에서서로겹치지않고그릴수있는점들의수 래스터화 (rasterization, 또는주사변환 scan conversion) : 디스플레이하려는그래픽스객체를이산적인픽셀값들의집합으로표현하는것
디스플레이방식의비교 벡터디스플레이 부드러운선을표현할수있다. 패턴으로채워진영역이나사실적인음영을갖는장면을표현하기어렵다. 디스플레이방식의비교 래스터주사디스플레이 다양한표면패턴, 조명효과등을나타낼수있도록픽셀값들을계산하여사실적인영상을디스플레이할수있다. 그래픽스객체들을하나하나의점들의집합으로주사변환을해야한다. 에일리어싱현상이발생한다. 목차 래스터그래픽스영상 래스터그래픽스영상이란? 1 컴퓨터그래픽스개요 래스터 : CRT 의래스터주사 (raster scan) 방식에서사용된용어 N x x X 2 컴퓨터그래픽스영상 3 OpenGL 프로그래밍 사각형격자좌표형태의픽셀배열로표현됨 디지털카메라, 스캐너등을통해입력한영상, MS Paint 나 Photoshop 과같은영상편집기를이용하여만든영상 TIFF, BMP, PNG, JPG 등의파일형식으로저장 N y Y y f(x, y) 교재관련부분 : 46~47 쪽
래스터그래픽스영상 래스터그래픽스영상의특성 색표현의정밀도 : 각픽셀당색을표현하는데사용되는비트수에의해결정됨 영상의크기 : 영상의가로픽셀수 세로픽셀수로표현 영상을저장하기위한메모리양은영상의크기및색표현의정밀도에의해결정됨 그림을확대해도더세밀한그림을얻을수는없음 벡터그래픽스영상 벡터그래픽스영상이란? 벡터 (vector) : 크기와방향을동시에나타내는값 벡터그래픽스 : 수학방정식을기반으로점, 직선, 곡선, 다각형등을표현하는방법 Adobe Illustrator, CorelDRAW 등의그래픽스에디터로제작 래스터영상 (300 200) 8 배확대래스터영상 교재관련부분 : 46~47 쪽 3dsMax, Maya 등의 3 차원그래픽스패키지에서도벡터방식으로물체를설계함 SVG, PDF, EPS, WMF, DXF 등의파일형식 교재관련부분 : 46~47 쪽 벡터그래픽스영상 벡터그래픽스영상의특성 목차 영상을저장하는데필요한메모리양은영상의크기가아니라그래픽스기본요소의수에의해결정됨 영상을확대해도화질이떨어지지않으며, 자연스럽게형체를유지하며확대됨 사진과같은영상을표현하기에는적절하지않음 래스터화및렌더링을통해래스터영상을만들어디스플레이함 1 컴퓨터그래픽스개요 2 컴퓨터그래픽스영상 3 OpenGL 프로그래밍 벡터영상 8 배확대벡터영상 교재관련부분 : 46~47 쪽
그래픽스 API 의역할 그래픽스응용프로그램 그래픽스 API 도형정의속성지정 기하변환 조명설정 뷰잉 장치관리자장치관리자장치관리자장치관리자 교재관련부분 : 48 쪽 OpenGL 개요 OpenGL이란? Silicon Graphics Inc. 의그래픽워크스테이션에 GL(Graphics Library) 이라는그래픽스루틴들을제공 GL을다양한워크스테이션에서활용할수있도록하드웨어에독립적인버전인 OpenGL을개발 SGI, DEC, IBM, Apple, Microsoft 등과함께 OpenGL Architecture Review Board(OpenGL ARB) 를구성하여 OpenGL을유지 관리 현재는 Khronos Group에서관리 저수준절차적 API : 장면을렌더링하기위해요구되는정확한단계를프로그래머가정확하게규정교재관련부분 : 50쪽 OpenGL 관련라이브러리 OpenGL 기본라이브러리 OpenGL의주라이브러리 기본도형그리기, 변환, 조명및렌더링등의함수를포함 Microsoft Windows의경우 opengl32.lib로제공되며, gl.h라는헤더파일을사용 기본라이브러리에서제공되는함수들에는 gl, 상수에는 GL_ 이라는접두사가붙음 glbegin(gl_lines); glclear(gl_color_buffer_bit); OpenGL 관련라이브러리 OpenGL 유틸리티 (GLU) 라이브러리 프로그래머가보다편리하게프로그램을만들수있도록보다높은수준의그리기루틴들을제공하는라이브러리 뷰잉및투영행렬의준비, 곡선및곡면표현및렌더링등 Microsoft Windows의경우 glu32.lib로제공되며, glu.h라는헤더파일을사용 GLU에서제공되는함수들에는 glu 라는접두사가붙음 glulookat(20.0, 10.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0);
OpenGL 관련라이브러리윈도입출력을위한라이브러리 OpenGL은장치독립적인라이브러리이며, 특정윈도시스템을위한기능은해당윈도시스템을위한라이브러리가필요함 Microsoft Windows : WGL 인터페이스루틴사용 헤더파일 : windows.h X Window 시스템의경우 GLX, 애플시스템의경우 AGL 루틴사용윈도시스템에의존적임 OpenGL 관련라이브러리윈도시스템독립적인터페이스라이브러리 GLUT(OpenGL Utility Toolkit) 라이브러리 임의의윈도시스템과상호작용할수있는루틴제공 glut32.lib 라이브러리파일및 glut.h 헤더파일을사용 함수에는 glut 라는접두사를사용 freeglut 라이브러리 더이상유지보수가되고있지않은 GLUT를대신할수있는라이브러리 freeglut32.lib 라이브러리파일및 freeglut.h 헤더파일을사용 OpenGL 관련라이브러리 Review OpenGL 의진화 그래픽스하드웨어발전에맞추어새로운버전으로진화 라이브러리헤더파일접두사 OpenGL 1.0 (1992) opengl32.lib gl.h gl glu32.lib glu.h glu glut32.lib 또는 freeglut32.lib glut.h 또는 freeglut.h glut OpenGL 2.0 (2004) OpenGL 3.0 (2008) OpenGL 4.0 (2010) GLSL(OpenGL Shading Language) 디프리케이션 (deprecation) 모델도입
OpenGL 의진화 그래픽스파이프라인의진화유연성및혁신 고정기능 (fixed-function) 파이프라인 응용프로그램이설정할수있는고정된개수의파라미터에의해제어되는동작을하는처리단계로구성되는그래픽파이프라인의버전 프로그램가능 (programmable) 파이프라인 꼭짓점, 조각 (fragments) 의처리및이들과관련된데이터 ( 예를들면텍스처좌표 ) 가프로그래머에의해지정되는셰이더 (shader) 프로그램에의해제어되는동작모드 GLSL : C-스타일의문장으로표현되는언어 OpenGL 의자료형 OpenGL 자료형 C/C++ 언어대응자료형 접미사 GLbyte 8비트정수 b GLshort 16비트정수 s GLint, GLsizei 32비트정수 i GLfloat, GLclampf 32비트실수 f GLdouble, GLclampd 64비트실수 d GLubyte, GLboolean 8비트부호없는정수 ub GLushort 16비트부호없는정수 us GLuint, GLenum, GLbitfield 32비트부호없는정수 ui 교재관련부분 : 55 쪽 OpenGL 의함수형태 정리하기 return_type <lib_prefix>functionname<arg_count><arg_type>{v} (<arguments>); return_type : 함수를실행한뒤되돌려받는데이터형 <lib_prefix> : 함수접두사 <arg_count> : 함수가갖는인수의수 <arg_type> : 인수의데이터형 {v} : 인수가벡터인경우첨가예 GLfloat col[ ] = {1.0, 0.0, 0.0}; glcolor3f(1.0, 0.0, 0.0); glcolor3fv(col); 교재관련부분 : 54쪽 1 컴퓨터그래픽스는그림을그리거나조작하기위해사용되는컴퓨터기술을연구하는학문분야이다. 2 벡터디스플레이방식은선그리기방식으로물체를디스플레이한다. 매끄러운선을그리게되는장점이있지만, 패턴, 사실적음영등의표현에어려움이있다. 3 래스터주사디스플레이방식에서는주사변환과정을통해픽셀단위로표현한그림을화면에디스플레이한다. 다양한표면패턴, 조명효과등을나타낼수있도록픽셀값들을계산하여사실적인영상을디스플레이할수있다. 주사변환이필요하며, 에일리어싱현상이발생할수있는단점이있다.
정리하기 정리하기 4 5 6 그래픽스시스템에서는그래픽스처리장치 (GPU) 를사용하여고속으로그래픽스처리를전담하게함으로써 CPU의그래픽스처리부하를줄인다. 벡터그래픽스영상 vs. 래스터그래픽스영상 벡터그래픽스영상 : 수학방정식을기반으로점, 직선, 곡선등을표현하여그림을구성 래스터그래픽스영상 : 사각형격자좌표형태의픽셀배열로그림을표현 OpenGL : Silicon Graphics 사의 GL을바탕으로다양한컴퓨터에서활용할수있도록개발한저수준절차적그래픽스 API 7 OpenGL의주요라이브러리 기본라이브러리 (GL) : 기본도형그리기, 변환, 조명및렌더링함수를제공 GLU 라이브러리 : 보다높은수준의그리기루틴들을제공 WGL, GLX, AGL 등 : 특정윈도시스템의입출력을위한라이브러리 GLUT : 임의의윈도시스템과상호작용할수있는윈도독립적함수들을제공