Graphics And Media 10

렌더링 파이프라인의 좌표 공간과 좌표 변환

렌더링 파이프라인의 좌표 공간과 좌표 변환 OpenGL에서 3D Object가 렌더링을 거쳐 화면에 뿌려지는 과정 World transform ( model matrix ) model space : 하나의 객체( model, object )를 모델링하는데 사용되는 좌표 공간 world space : 각각의 model space에 표현된 객체들을 하나의 공간에 표현하기 위해 통합된 좌표 공간 위 내용을 바탕으로 world transform 이란 물체가 화면 상에 어떻게 표현될지 결정하는 과정이라는 것을 알 수 있다. 예를 들어 객체가 보여질 화면에서 어디로 이동하여 위치할지, 축소 시킬지, 변환할지 등. view transform ( view matrix ) view transform은 world spac..

OpenGL 3D Object file

OpenGL 3D Object file .obj 파일은 3D 지오메트리만 나타내는 데이터 파일입니다. 각 정점의 위치와 텍스트 uv 좌표 위치, 정점 법선 및 다각형을 이루는 면의 정점 목록으로 구성되어 있습니다. 데이터 형식 .obj 파일은 해시(#), v, vt, vn, f 등 아래와 같은 키워드가 존재합니다. Vertex Data v : 정점 좌표 데이터. x,y,z,w 로 구성되며, w는 생략 시 1.0이 기본으로 설정된다 [ v 0.10 0.10 0.10 1.0 ] vt : 텍스처 좌표 데이터. u,v w로 구성되며, v와 w는 생략 시 0이 기본으로 설정된다 [ vt 0.1 0.1 0 ] vn : vertex normals data. x,y,z로 구성되며 단위 벡터가 아닐 수 있습니다. [ v..

Projection by W

OpenGL에서는 좌표를 표현하기 위해 ( x, y, z, w ) 를 기준으로 좌표를 표현한다. 여기서 x, y, z 는 3D 공간 상의 좌표를 의미하며 w는 좌표의 변환행렬을 위한 값으로 쓰인다. 이는 ( x, y, z, 1) 로 표현 했을 때, 즉 w가 1일 때 이동 변환, 스케일링 등에 영향을 받게 되어 공간 좌표를 뜻하게 되고 ( x, y, z, 0 ) 즉, w 가 0 일 때는 변환이나 스케일링 등에 영향을 받지 않고 방향 만을 표현하게 된다. 또한 w를 이용한 동차좌표계를 통해 projection divide가 가능하다는 것을 확인할 수 있다. 즉 w는 사물의 원근감을 표현하기 위해 사용될 수 있다는 것이다. ( 직교 투영을 의미 ) 위 그림의 두 점 a(-2,-2) , b(2,-2) 를 보자...

Dear ImGui :: C++ 그래픽 인터페이스 라이브러리

외부 종속성 없이 사용 가능한 라이브러리 Dear ImGui는 라이브러리를 C++ 소스코드를 포함하여 제공하기에 외부 종속성 없이 사용이 가능한 그래픽 인터페이스 라이브러리 입니다. ( https://github.com/ocornut/imgui ) 게임엔진이나 임베디드 어플리케이션, 콘솔 플랫폼의 어플리케이션 개발에 적합하며 Ubisoft, Blizzard, Nvidia 등 굵직한 기업들이 사용하고 있습니다. ( 이외 https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui 참고 ) Dear Imgui를 프로젝트에 사용하기 위해서는 백엔드 모듈이 필요합니다. 백엔드는 마우스와 키보드, 게임패드와 같은 입력과 DirectX, OpenGL, Vulka..

Hello wayland - 간단 예제

hello wayland 앞선 과정에서 웨이랜드가 무엇인지, 웨이랜드로 윈도우를 관리하기 위해 구성되는 요소들이 무엇인지, 그 구성요소들은 웨이랜드에서 어떻게 표현되는지에 간략히 소개하였습니다. hello wayland 에서는 앞선 내용을 바탕으로 간단한 예제를 소개하도록 합니다. Required library 리눅스에서 웨이랜드로 윈도우를 관리하기 위해서는 wayland library와 화면의 렌더링을 담당할 gles 라이브러리가 필요합니다. wayland library는 디스플레이 장치로부터 윈도우 창을 생성하며, 그 외에 마우스나 키보드와 같은 윈도우에서 사용할 수 있는 입력 장치들과 연결하는 등에 필요한 라이브러리 입니다. gles는 디스플레이 장치에 표현할 출력 화면의 렌더링에 필요한 라이브러리..

Getting started GStreamer : Dynamic pipeline

Getting started GStremaer 는 freedesktop의 gstreamer 예제에 대해 번역 및 참고하여 개발해보았을때 필요하다고 느꼈던 내용 들을 아주 살짝 추가/제거하여 작성했습니다. https://gstreamer.freedesktop.org/documentation/tutorials/basic 3) 동적 파이프라인 목표 이번 예제에서는 프로그램 시작 부분에 모놀리 식 파이프라인을 정의하는 대신 정보를 사용할 수 있게 되면 파이프라인을 즉시 구축할 수 있는 방법에 대해 서술합니다 ( 개념 정의 새로할 것... ) 이 과정을 마치면 playback 튜토리얼을 시작하는데 필요한 지식을 갖게 됩니다. 이번 예제에서 다룰 내용은 아래와 같습니다. 엘레멘트를 연결할 때 더 세밀한 제어를 하는..

Getting started Gstreamer : GStreamer concepts

Getting started GStremaer 는 freedesktop의 gstreamer 예제에 대해 번역 및 참고하여 개발해보았을때 필요하다고 느꼈던 내용 들을 아주 살짝 추가/제거하여 작성했습니다. https://gstreamer.freedesktop.org/documentation/tutorials/basic 2) 사용자 정의 파이프라인 생성 목표 이전 예제는 파이프라인을 자동으로 빌드하는 방법을 보여주었습니다. 이제 각 엘레멘트 (src, sink)를 인스턴스화하고 연결하여 수동으로 파이프라인을 구축할 것입니다. 이 과정에서 다음 내용을 배울 수 있습니다. GStreamer 엘레멘트는 무엇을 어떻게 만드는지. 엘레멘트를 서로 연결하는 방법 엘레멘트의 동작을 사용자 정의하는 방법 Bus에서 오류 ..

Getting started GStreamer : Hello wolrd

Getting started GStremaer 는 freedesktop의 gstreamer 예제에 대해 번역 및 참고하여 개발해보았을때 필요하다고 느꼈던 내용 들을 아주 살짝 추가/제거하여 작성했습니다. https://gstreamer.freedesktop.org/documentation/tutorials/basic GStreamer 개념 스트리밍 미디어 어플리케이션을 만들기 위한 프레임워크 디비오 파이프라인 개념과 다이렉트쇼의 몇가지 아이디어로 시작됨 MP3, Ogg/Vorbis, MPEG-1/2, AVI, Quicktime, mod 등과 같은 다양한 포맷을 지원하는 미디어 플레이어를 만들 수 있는 컴포넌트를 포함하고 있다. GStreamer는 다양한 코덱과 기능을 제공하는 플러그인을 기반으로한다. 플..

Getting started OpenGL ES with EGL

Getting started EGL What is EGL ? EGL이란 native window system과 grapic API를 연결해주는 그래픽 인터페이스를 의미 *ref : https://docs.imgtec.com/OpenGLES_HelloAPI_Guide/OpenGLES_Introduction/topics/createEGLDisplay.html * EGL은 display 개념을 사용한다. 이것은 렌더링 된 그래픽을 출력하여 보여줄 추상 객체를 의미한다. 주어진 윈도우 시스템에 대한 기본 디스플레이를 작성한 후 EGL은 이 핸들을 사용하여 렌더링에 사용할 EGLDisplay 핸들을 가져올 수 있다. EGL Configuration은 어플리케이션에 필요한 기능과 그리기에 사용할 수 있는 표면 유형..

Getting Started Wayland !

Getting started wayland on Linux 내용을 정리하기에 앞서 맨 하단의 Refer Site 를 꼭 한번 들르시길 바랍니다. 특히 :star: 표시가 된 사이트는 wayland를 분석하고 사용함에 있어서 큰 도움이 되는 사이트입니다. What is Wayland wayland는 X11을 대체하기 위한 윈도우 시스템으로 컴포지터와 클라이언트가 통신하기 위한 프로토콜이다. wayland는 라이브러리로써 X11을 대체하기 위해 weston과 같은 컴포지터가 필요한데, weston은 wayland의 compositor 참조 구현을 의미합니다. compositor는 윈도우 시스템에서 윈도우들의 함성을 담당함으로써 하나의 장면을 만들어내는 역할을 합니다. 또한 compositor는 KMS( Ke..