본문 바로가기

OpenGL

(53)
Learn OpenGL - Getting started : Transofrmations link : https://learnopengl.com/Getting-started/Transformations Transformations 우리는 이제 오브젝트를 생성하고, 색상을 지정하고, 텍스처를 사용해 자세한 모양을 제공하는 방법을 알고 있다. 그러나 그것들은 모두 정적 오브젝트이므로 여전히 흥미롭지 않다. 정점을 변경하고 각 프레임의 버퍼를 다시 구성해 시도해 볼수는 있지만 성가시고 비용이 많이 든다. 객체를 변형하는 방법은 훨씬 더 많다. 그 방법은 (여러) 행렬 객체를 사용하는 것이다. 이것은 우리가 kungfu 및 큰 디지털 인공 세계에 대해서 이야기하기 위해 하고 있다는 것을 의미하지 않는다. 행렬은 처음에는 두려운 것처럼 보이는 매우 강력한 수학적 구조이지만 일단 익숙해지면 매우 유용한..
Learn OpenGL - Getting started : Textures link : https://learnopengl.com/Getting-started/Textures Textures 객체에 더 많은 디테일을 추가하기 위해 각 정점에 색상을 사용해 흥미로운 이미지를 만들 수 있음을 알게 되었다. 그러나 사실적인 느낌을 얻기 위해서는 많은 정점을 가져야하므로 많은 색상을 지정할 수 있다. 각 모델에는 더 많은 꼭지점이 필요하고, 각 꼭지점마다 색상 속성이 필요하기 때문에 상당한 추가 오버 헤드가 요구된다. 예술가와 프로그래머가 일반적으로 선호하는 것은 텍스처를 사용하는 것이다. 텍스처는 오브젝트에 디테일을 추가하는 데 사용되는 2D이미지이다. (1D 및 3D 텍스처도 있다) 좋은 벽돌 이미지가 있는 종이 조각처럼 텍스처를 3D 집 위에 깔끔하게 접어서 집에 돌 외관이 있는..
Learn OpenGL - Getting started : Shaders link : https://learnopengl.com/Getting-started/Shaders Shaders Hello Triangle 튜토리얼에서 말했듯이 쉐이더는 GPU에 거의 의존하지 않는다. 이러한 프로그램은 그래픽 파이프 라인의 특정 섹션마다 실행된다. 기본적으로 쉐이더는 입력을 출력으로 변환하는 프로그렘에 지나지 않는다. 쉐이더는 서로 통신할 수 없기 때문에 매우 고립되있다. 그들이 가진 유일한 커뮤니케이션은 입력과 출력을 통해서이다. 이전 튜토리얼에서 우리는 쉐이더의 표면과 그것들을 적절하게 사용하는 방법을 간략하게 설명했다. 보다 일반적인 방식으로 쉐이더, 특히 OpenGL 쉐이딩 언어를 설명할 것이다. GLSL 쉐이더는 C와 유사한 언어 GLSL로 작성된다. GLSL은 그래픽과 함께 ..
Learn OpenGL - Getting started : Hello Triangle link : https://learnopengl.com/Getting-started/Hello-Triangle Hello Triangle OpenGL에서는 모든 것이 3D 공간에 있지만 화면과 창은 2D 픽셀 배열이므로 OpenGL의 많은 작업은 모든 3D 좌표를 화면에 맞는 2D 픽셀로 변환하는 것이라고 볼 수 있다. 3D 좌표를 2D 좌표로 변환하는 프로세스는 OpenGL의 그래픽 파이프라인에 의해 관리된다. 그래픽 파이프 라인은 크게 두 부분으로 나눌 수 있다. 첫 번째 부분은 3D 좌표를 2D 좌표로 변환하고, 두 번째 부분은 2D 좌표를 실제 색이 있는 픽셀로 변환하는 것이다. 이 튜토리얼에서는 그래픽 파이프 라인에 대해 간략히 논의하고 멋진 픽셀을 만드는데 어떻게 활용하는지에 대해 간략히 설명..
Learn OpenGL - Getting started : Hello Window link : https://learnopengl.com/Getting-started/Hello-Window Hello Window 우선 GLFW를 가동시킬 수 있는지 보자. .cpp파일을 생성하고 맨 위에 다음 include를 추가해라. #include #include GLFW를 포함시키기 전에 GLAD를 포함해야한다. GLAD용 헤더파일에는 (GL/gl.h)와 같은 OpenGL 헤더파일이 포함되어있기 때문이다.다음으로 main 함수를 작성한다. int main() { glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_..
Learn OpenGL - Getting started : Creating a Window link : https://learnopengl.com/Getting-started/Creating-a-window Creating a Window 멋진 그래픽을 만들기 위해 가장 먼저해야 할 일은 OpenGL Context와 그림을 그릴 Window 응용 프로그램을 만드는 것이다. 하지만 이러한 작업은 운영체제별로 다르며 OpenGL은 의도적으로 이러한 작업들을 추상화하려고 한다. 이것은 우리가 윈도우를 만들고, context를 정의하고, 사용자 입력을 모두 처리해야한다는 것을 의미한다. 다행히 이미 우리가 원하는 기능을 제공하는 라이브러리가 많다. 특히 OpenGL을 목표로 한 라이브러리도 있다. 이러한 라이브러리는 우리에게 모든 운영체제 관련 작업을 저장하고, 렌더링 할 창과 OpenGL conte..
OpenGL-Tutorial 19 : Particles / Instancing link : http://www.opengl-tutorial.org/kr/intermediate-tutorials/billboards-particles/particles-instancing/ Wow 마지막 튜토리얼이다. 꾸준히 달려온 나에게 칭찬을 보낸다. 하지만 튜토리얼을 진행해오면서 이해가 덜된 부분이 많기 때문에 복습을 다시 할 것이다. 복습 후에는 가볍게 게임을 하나 만들어봐야지! 화이팅! Particles / Instancing particle은 3D billboards와 매우 유사하다. 두 가지 차이점이 있다 : 1) 많은 것들이 합쳐져있고, 움직인다2) 나타나고 죽고, 그들은 반투명하다 이 두 가지 차이는 모두 문제가 있다. 이 튜토리얼에서는 문제를 해결할 수 있는 방법을 제시한다. Part..
OpenGL-Tutorial 18 : Billboards link : http://www.opengl-tutorial.org/kr/intermediate-tutorials/billboards-particles/billboards/ 이번 튜토리얼은 한글로 번역이 되어있다! 개꿀~~~ Billboards 빌보드는 3D공간에서 표현되는 2D 요소다. 화면 내 모든 것을 가리는 2D 메뉴 같은 것도 아니고, 회전시키는 3D 평면도 아니다. 대부분의 게임에서 체력바를 표시할 때 사용하는 것이라고 생각하면 된다. 빌보드가 다른 요소들과 다른 점은 공간에서 위치를 가지되 회전은 자동으로 계산되어 항상 카메라를 바라보게 만든다는 점이다. Solution #1 : 2D 방식 이 방법은 매우 쉽다. 단순히 화면 내 위치를 계산하고, 이 위치에 2D 텍스트를 표시한다. (튜토리얼..