Computer Graphics 18

Chapter06. 디스플레이 리스트

디스플레이 리스트 Display 콜백함수에서 계산을 줄이기 위한 그래픽 속도 향상 솔루션 Display 콜백함수에서 Object의 색상 점 등을 계산하면 display 시의 load가 커짐 Object의 수가 많아지고, 복잡해 질 수록 속도 저하 Object를 미리 만들어 list에 넣어 두고, 콜백 함수에서는 이를 재사용 예시 코드 int list_id // 전역변수 생성 void createList(){ list_id = glGenLists(1); // list 1개 생성 glNewList(list_id, GL_COMPILE); //list의 시작, 컴파일(계산)만 수행함 glBegin(GL_POLYGON); //그릴 내용 glEnd(); glEndList();//리스트 종료 } createList(..

Computer Graphics 2021.05.31

Chapter 05. 정점 배열과 3차원 도형 그리기

#include #include #include #define _WINDOW_WIDTH 800 #define _WINDOW_HEIGHT 800 GLfloat MyVertices[8][3] = {{-0.25,-0.25,0.25},{-0.25,0.25,0.25},{0.25,0.25,0.25}, {0.25,-0.25,0.25},{-0.25,-0.25,-0.25},{-0.25,0.25,-0.25}, {0.25,0.25,-0.25},{0.25,-0.25,-0.25}}; //정육면체의 8개의 정점 3차원 좌표(꼭지점) //순서대로 0부터 7번의 번호가 매겨질 것이다.(밑에서) GLfloat MyColor[8][3] = {{0.2,0.2,0.2},{1.0,0.0,0.0},{1.0,1.0,0.0}, {0.0,1.0,0..

Computer Graphics 2021.05.28

Chapter04. 애니메이션과 더블버퍼링

애니메이션 애니메이션은 여러 프레임에 존재하는 이미지들을 빠른 속도로 계산, 재생함으로써 특정 물체가 부드럽게 움직이도록 한다. 그런데, 현재 우리가 보고 있는 동영상, 영화, 게임들은 하나의 객체만 처리하는 것이 아니고 수 많은 그래픽 작업들을 요구하게 된다. 프레임 마다의 장면을 처리함에 있어서 많은 처리량이 요구될 것이다. 따라서, 현 프레임의 장면을 계산하고 디스플레이에 뿌려준 다음 또 다시 프레임의 장면을 계산하고 디스플레이에 뿌려주는 단순한 방법으로 애니메이션을 처리한다면 Delay가 발생할 수 밖에 없다. 즉, 뚝뚝 끊켜 보일 것이다. 이를 처리하기 위해 Double Buffering기법이 요구된다. Double Buffering https://codejb.tistory.com/39

Computer Graphics 2021.05.28

Chapter03. 입력 콜백

시스템과 이벤트 게임을 하다보면 클릭이나 키보드 입력을 통해서 특정 이벤트가 발생하도록 구현되어 있다. 따라서, 입력이 들어왔는지 안들어왔는지 항시 체크를 함으로써, 입력에 따른 이벤트 처리를 해야한다. 하지만 이를 무한 Loop를 돌려서 하기에는 비효율적이고 CPU의 Cost가 증가하게 된다. 따라서 이는 운영체제의 지원을 받음으로써 보다 효율적인 처리가 가능하다. 운영체제는 이벤트 큐라고 하는 기능을 지원한다. 큐는 자료구조로써 First In First Out로, 먼저들어온 작업을 먼저 처리한다는 자료구조이다. 따라서, 먼저 들어온 이벤트 입력을 먼저처리하는 기능이다. 그러면 우리는 무한Loop를 돌리지 않고 운영체제에 접근해서 이벤트 큐에 처리하고자 하는 입력을 넘겨줄 수 있는데, 이를 가능하게 ..

Computer Graphics 2021.05.27

Chapter02. OpenGL 시작 및 실습코드

OpenGL이란? Vertices를 Pixels로 변환하는 과정을 지원하는 그래픽스 표준 API이다. 1992년 실리콘 그래픽스사에서 만든 2차원 및 3차원 그래픽스 표준 API로, 함수 호출을 통해 기하도형에서부터 복잡한 3차원 장면을 생성할 수 있다. 즉, OpenGL은 Vertices를 Pixels로 변환하는 과정을 지원한다. 앞서 살펴보았던 GPU를 통해 컴퓨터 화면에 그림을 생성하는 과정(아래 그림) 여기선 Vectices를 응용프로그램이라고 했으나 간단하게 점이라고 생각하자. 즉, 점을 픽셀로 변환하는 이 과정을 OpenGL이 해주는 것이다. 하지만 각 과정에 어떤 상태변수를 넘겨줌으로써 우리가 원하는 그림을 그려내야 할 것이다. 따라서 아래와 같은 그림으로 설명할 수 있다. OpenGL을 이..

Computer Graphics 2021.05.26

Chapter 01-03. Graphics System & Model 상식

Computer Graphics - Graphics System & Model - 그래픽스 시스템 전반의 각종 요소와 용어들에 대해서 다 살펴본다. 일단 그래픽스 시스템에 무엇이 있고 과거엔 무엇을 사용했는지 간단하게 훑어보고, 이 중에 중요한 것들은 나중에 자세하게 다룰 것이다. 그래픽스 시스템(하드웨어)에 대해서 알아보자 그래픽스 시스템은 PC의 영역과 그래픽의 영역이 있다.(포함 관계이다.) PC 영역 : CPU, Memory, Disk, Graphics Card, Sound Card, Network, Peripherals : keybboard, mouse, monitor Graphics Card 영역 : GPU, Memory, Video Output 시대가 지날수록 그래픽 성능이 더 많이 요구되고..

Computer Graphics 2021.05.19

Chapter 01-02. 시작과 상식

Computer Graphics - 시작과 상식 - 컴퓨터 그래픽스에 대한 본격적인 공부에 앞서서 상식적인 부분에 대해 알아보도록 한다. 컴퓨터 그래픽스란? 컴퓨터 그래픽스란 컴퓨터를 이용해서 이미지나 그림을 만들어내는 일련의 과정을 이를 위한 기술들을 통칭하는 단어이다. "당신이 눈으로 보고있는 장면을 컴퓨터 화면에 그려봐라"에 대한 대답을 어떻게 할 수 있을까? 이 세상은 3차원, 4차원 여러 말들이 있다만, 3차원이라고 생각해보자. 이 세상에는 3차원으로된 객체들이 있으며, 그 객체들은 모양, 색깔, 음영, 질감들을 가지고 있다. 그리고 그 객체들은 가만히 있을 수도 있고 항상 움직일 수도 있다. 뿐만 아니라 빛, 그림자, 어떤 현상에 의한 Effect 등 다양한 시각적 요소들로 이루어져 있다. 이..

Computer Graphics 2021.05.19

Chapter 01. 들어가기에 앞서

Computer Graphics / OpenGL - 독학 시작 - AR/VR Contents Dev와 Game Programming을 하기에 앞서서, 이 기술들의 근간이 되는 Computer Graphics에 대한 이해가 필요하다고 생각한다. 단순하게 High Level의 Unity Game Engine을 이용한 C# Programming만 하면서 생각해 보니, Particle System이나 Rendering PipeLine도 모른채 마냥 갖다 쓰고만 있다는 본인이 한심하게 느껴졌고 전문성을 갖추기 위해서 해당 이론에 대해 기초부터 꼼꼼히 살펴보고자 한다. 공부 방식 공부 방식은 인터넷에 올라온 무료 온라인 강의를 통해 공부한다. 그리고 강의에 포함되어 있지 않은 내용들은 추가적으로 정보를 수집하여 정..

Computer Graphics 2021.05.18