분류 전체보기(220)
-
[vk] Drawing triangle - setup - Instance
1. Creating an instance - instance 는 소프트웨어 구조체, 응용프로그램의 상태를 다른 앱이나 현재앱의 문맥에서 수행되는 라이브러리부터 논리적으로 분리시킴 - 시스템의 물리 장치는 인스턴스의 구성원으로 표현, 각각 특정 능력을 가지고, 가용한 큐의 선택을 포함 - vulkan은 앱의 하위시스템, vulkan라이브러리에 한번 연결하고 초기화하면 일부 상태를 추적 -> 추적하기 위해서는 객체들을 저장해야함. 이를 인스턴스 장치, Vkinstance 객체로 표현. - 인스턴스를 생성, vulkan 라이브러리를 초기화해야함 - 인스턴스는 응용프로그램과 vk 라이브러리간의 연결 - 이를 작성하려면 응용 프로그램에 대한 세부정보를 드라이버에 지정해야함 2. vkCreateInstance -..
2021.08.05 -
[vk] Drawing triangle - setup - base code
General structure #include #include #include #include class HelloTriangleApplication { public: void run() { initVulkan(); mainLoop(); cleanup(); } private: void initVulkan() { } void mainLoop() { } void cleanup() { } }; int main() { HelloTriangleApplication app; try { app.run(); } catch (const std::exception& e) { std::cerr free) 최신 c++ 헤더 - RAII or smart pointers 를 사용해서 자동으로 관리할 수 있긴함 - 하지만, 튜토..
2021.08.04 -
[vk] Vulkan Tutorial: 삼각형을 그리기 위한 단계
Summary 실제 프로그램은 더 많은 단계를 수행해야함 - 정점 버퍼 할당 (allocating vertex buffers) - 유니폼 버퍼 생성 (creating uniform buffers) - 텍스처 이미지 업로드 (uploading texture images) 하지만 여기선 "삼각형"을 생성하기위해, 정점버퍼대신 정점 셰이더에 정점좌표를 포함시킴. (정점 버퍼를 관리하기 위해선 먼저 명령버퍼부터 익숙해져야함) 아래는 vulkan에서 삼각형 만들기 과정. Create a VkInstance Select a supported graphics card (VkPhysicalDevice) Create a VkDevice and VkQueue for drawing and presentation Create..
2021.08.04 -
[learn-OpenGL] Transformations
벡터, 내적, 외적, 행렬 은 생략 1. 그래픽스 변환 1) 강체 변환(rigifbody transformation) = 이동변환 + 회전변환 = 모습은 불변 2) 유사변환(similarity transformation) = 강체변환 + 균등크기조절변환 + 반사변환 = 물체사이의 각이 유지 = 물체내부 정점간의 거리가 일정한 비율로 유지 3) 어파인 변환(affine transformation) = 유사변환 + 차등 크기조절 + 전단 : 물체의 타입이 유지, 변환행렬의 마지막 행이 (0, 0, 0, 1) 4) 원근 변환(perspective transformation) = 평행선이 만남, 소실점에서 만남, 마지막행이 (0, 0, 0, 1) 이 아님 5) 선형 변환(linear transformation)..
2021.07.26 -
[learn-OpenGL] Textures
1. Textures = 각 모델에는 더많은 vertex들이 필요, 각 vertex는 컬러 attributes이 필요 => 오버헤드 = 텍스처 : 2D, 1D, 3D image = vertex를 추가하지 않아도 오브젝트가 매우 세밀하게 묘사된것처럼 = 텍스쳐는 많은 양의 데이터를 저장하여 shader에 보낼 수 있음. 삼각형에 매핑 = 각 vertex에 텍스처의 어느 부분이 해당하는지 알려주어야함. = 각 vertex에는 샘플링할 texture coorfinate 가 있어야함 = fragment 보간을 통해 텍스처 좌표 를 보간 텍스처 좌표의 범위 = x와 y축상의 0~1 = 텍스쳐 좌표를 사용하여 텍스쳐 컬러를 가져오는것을 sampling이라고 함. = 좌측하단 vertex : (0, 0) = 우측하단..
2021.07.25 -
[learn-OpenGL] Shaders
1. Shaders = GPU에서 동작하는 프로그램 (little programs tat rest on the GPU) = 파이프라인 각 단계마다 사용되는 shader가 다름 = shader는 입력값을 출력값으로 변환시키는 프로그램으로 아주 독립적인(isolated) 프로그램 = 서로 통신할 수 없음. 유일한 comunication은 입력값과 출력값을 통해서하는것 2. GLSL = Shader는 C언어와 비슷한 GLSL로 작성한다. = GLSL is tailored for use with graphics and contains useful features : vector + matrix manipulation. = 항상 버전 선언으로 시작 = 그다음으로 입력 변수와 출력변수들이 나오게됨 = uniform..
2021.07.24