본문 바로가기

College Study/OpenGL14

(Draft) Texture Mapping, 3D Models, Lighting * 이 게시물은 추후 archive될 예정입니다. 5.1 Loading Texture Image Files 5.2 Texture Coordinates 5.3 Creating a Texture Object 5.4 Constructing Texture Coordinates 5.5 Loading Texture Coordinates into Buffers 5.6 Using the Texture in a Shader: Sampler Variables and Texture Units 5.7 Texture Mapping: Example Program 5.8 Mipmapping 5.9 Anisotropic Filtering 5.10 Wrapping and Tiling 5.11 Perspective Distortion .. 2022. 3. 10.
(Draft) Managing 3D Graphics Data : Highlights & Codes * 이 게시물은 추후 archive될 예정입니다. a buffer to a vertex attribute directly to a uniform variable 4.1 Buffers and Vertex Attributes init() display() Vertex Buffer Object Vertex Array Object one will be sufficient GLuint vbo[2]; glGenBuffers(2, vbo); We store those IDs in the integer arrays vao and vbo. Vertex attributes are generally the first variables declared in a shader. this vertex attribute will b.. 2022. 3. 10.
[그래픽스] 투영 행렬, Look-At 행렬, GLSL 변환 행렬 함수 (Projection Matrices, Look-At Matrices, GLSL Functions for Transformation Matrices) * 이 게시물은 Computer Graphics Programming in OpenGL with C++ 책의 일부를 번역 및 재해석한 게시물입니다. 의역 또는 오역이 있을 수 있으니 참고하시고, 피드백은 댓글을 남겨주세요. 투영 행렬 (Projection Matrices) 우리가 카메라를 설치하였기 때문에, 프로젝션 행렬을 검토할 수 있습니다. 우리가 이제 검토할 두 가지 중요한 프로젝션 행렬은 원근(perspective)과 직교(orthographic)입니다. 1. 원근 투영 행렬 (Perspective Projection Matrices) 원근 투영은 원근의 개념을 활용함으로써 우리가 현실 세계를 볼 때 보는 것을 모방하여 2D 그림을 3D처럼 보이게 합니다. 가까운 오브젝트는 멀리 떨어져 있는 오브.. 2022. 3. 7.
[그래픽스] 공간(Local Space, World Space, Eye Space) 간 변환 * Computer Graphics Programming in OpenGL with C++ 책을 참고하였습니다. * 책을 번역한 것이 아닌, 제가 독학 후 책을 참고하여 설명하는 게시물입니다. 따라서 책에 없는 부연 설명이 있기도 하며, 의역 또는 오역, 오개념이 있을 수 있습니다. 피드백은 댓글을 남겨주세요. * 영어 용어를 최대한 한국어로 번역하지 않습니다. 처음부터 코드에서 사용되는, 또는 원서나 인터넷에서 사용되는 보편적 용어를 사용하여 개념을 잡는 것을 추천드립니다. Local Space OpenGL 또는 다른 프레임워크들로 3D 그래픽스를 사용하는 목적은 주로 3차원의 세상을 구현하고 그 속에 오브젝트를 배치하여 모니터로 보는 것입니다. 3D 오브젝트 모델을 처음 생성할 때에는, 모델을 가장 .. 2022. 3. 2.
[그래픽스] 기초 수학 (3) - 벡터 * Computer Graphics Programming in OpenGL with C++ 책을 참고하였습니다. * 책을 번역한 것이 아닌, 제가 독학 후 책을 참고하여 설명하는 게시물입니다. 따라서 책에 없는 부연 설명이 있기도 하며, 의역 또는 오역, 오개념이 있을 수 있습니다. 피드백은 댓글을 남겨주세요. * 영어 용어를 최대한 한국어로 번역하지 않습니다. 처음부터 코드에서 사용되는, 또는 원서나 인터넷에서 사용되는 보편적 용어를 사용하여 개념을 잡는 것을 추천드립니다. ​ ​ 지난 포스트에 이어, 벡터의 기본 개념과 3D 응용 프로그램에서 벡터가 어떻게 활용되는지 간단하게 설명하도록 하겠습니다. ​ ​ 고등학교 이과 수학에서 등장하는 개념인 벡터는(요즘 교육과정은 어떤지 모르겠네요), magnit.. 2020. 10. 15.
[그래픽스] 기초 수학 (2) - Transformation Matrices (변환 행렬) * Computer Graphics Programming in OpenGL with C++ 책을 참고하였습니다. * 책을 번역한 것이 아닌, 제가 독학 후 책을 참고하여 설명하는 게시물입니다. 따라서 책에 없는 부연 설명이 있기도 하며, 의역 또는 오역, 오개념이 있을 수 있습니다. 피드백은 댓글을 남겨주세요. * 영어 용어를 최대한 한국어로 번역하지 않습니다. 처음부터 코드에서 사용되는, 또는 원서나 인터넷에서 사용되는 보편적 용어를 사용하여 개념을 잡는 것을 추천드립니다. ​ ​ 지난 포스트에 이어, 3D 그래픽스 프로그램에서 수학을 사용하는 방식에 대해 설명하겠습니다. ​ ​ 그래픽스에서는, 물체의 변환을 수행하기 위해 행렬들이 사용됩니다. Translation(이동), Rotation(회전), S.. 2020. 10. 15.
[그래픽스] 기초 수학 (1) - 좌표계, 점, 행렬 * Computer Graphics Programming in OpenGL with C++ 책을 참고하였습니다. * 책을 번역한 것이 아닌, 제가 독학 후 책을 참고하여 설명하는 게시물입니다. 따라서 책에 없는 부연 설명이 있기도 하며, 의역 또는 오역, 오개념이 있을 수 있습니다. 피드백은 댓글을 남겨주세요. * 영어 용어를 최대한 한국어로 번역하지 않습니다. 처음부터 코드에서 사용되는, 또는 원서나 인터넷에서 사용되는 보편적 용어를 사용하여 개념을 잡는 것을 추천드립니다. ​ ​ 책의 챕터 3은 그래픽에 유용하게 사용될 수학적 기초를 소개합니다. 선형대수학의 기본 지식들을 포함하여 그래픽스 프로그램에서 자주 사용하는 공식들이 대부분이죠. 저는 이번 게시글에서 아주 기본적인 수학 부분은 생략하고, 새로.. 2020. 10. 15.
[그래픽스] 정점으로 개체 그리기, 애니메이팅, 모듈화 * Computer Graphics Programming in OpenGL with C++ 책을 참고하였습니다. * 책을 번역한 것이 아닌, 제가 독학 후 책을 참고하여 설명하는 게시물입니다. 따라서 책에 없는 부연 설명이 있기도 하며, 의역 또는 오역, 오개념이 있을 수 있습니다. 피드백은 댓글을 남겨주세요. * 영어 용어를 최대한 한국어로 번역하지 않습니다. 처음부터 코드에서 사용되는, 또는 원서나 인터넷에서 사용되는 보편적 용어를 사용하여 개념을 잡는 것을 추천드립니다. ​ ​ 궁극적으로 우리는 보통 하나 이상의 정점을 활용해 개체를 생성하는 것을 목표로 합니다. 따라서 우선은 3개의 정점으로 삼각형을 그리는 간단한 예제부터 실행해보도록 하죠. ​ 지난 [Program 2.2]를 약간만 수정하면 됩.. 2020. 6. 9.
[그래픽스] 파일에서 GLSL 소스코드 읽기 * Computer Graphics Programming in OpenGL with C++ 책을 참고하였습니다. * 책을 번역한 것이 아닌, 제가 독학 후 책을 참고하여 설명하는 게시물입니다. 따라서 책에 없는 부연 설명이 있기도 하며, 의역 또는 오역, 오개념이 있을 수 있습니다. 피드백은 댓글을 남겨주세요. * 영어 용어를 최대한 한국어로 번역하지 않습니다. 처음부터 코드에서 사용되는, 또는 원서나 인터넷에서 사용되는 보편적 용어를 사용하여 개념을 잡는 것을 추천드립니다. ​ ​ 지난 '쉐이더' 게시글(https://goeden.tistory.com/10)에서 살펴본 [Program 2.2]는 쉐이더 코드가 main.cpp 안에 문자열로 존재했습니다. 하지만 쉐이더 코드를 따로 파일로 저장하여, ma.. 2020. 6. 8.