전체 글(220)
-
[vk] Vertex buffers - Staging buffer
1. Introduction - vertex buffer는 지금 올바르게 작동하지만 - 현재 memory type은 CPU에 접근 가능하게 해주지만, - 그래픽 카드 자체에서 읽을 수 있는 가장 최적의 memory type이 아닐 수 있다, - 가장 최적의 메모리는 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT 플래그이며 - 이것은 일반적인 방법으론 전용 그래픽카드(dedicated graphics card)를 사용하는 CPU에서 접근불가능하다 - 이번 챕터에서는 두개의 vertex buffer를 만들것이다. - 하나는 staging buffer로 vertex 배열 데이터를 메모리로 업로드할 수 있는 CPU 접근가능한 메모리이며 - 하나는 vertex buffer로 device loca..
2021.08.14 -
[vk] Vertex buffers - Vertex buffer creation
1. Introduction - Vulkan의 버퍼들은 그래픽 카드에의해 읽힐 수 있는 임의의 데이터를 저장하는데 사용되는 메모리 영역이다. - 버퍼들은 vertex data를 저장하는데 사용할 수 있으며, 현재 챕터에서 다룰것이다. - 또한 버퍼들은 많은 목적으로 앞으로의 챕터에서도 보게될것이다. - 이때까지 다룬 Vulkan objects과는 다르게 버퍼들은 자동적으로 메모리를 할당하지 않는다. - Vulkan API가 프로그래머에게 대부분 모든것들에 대해 통제권을 주며, 메모리 관리 또한 이 중 하나이다. (The work from the previous chapters has shown that the Vulkan API puts the programmer in control of almost e..
2021.08.14 -
[vk] Vertex buffers - Vertex input description
Vertex input description 1. Introduction - 셰이더에 하드코딩된 vertex data를 vertex buffer로 수정할것이다 - 가장 쉬운 접근법인 CPU visible buffer 를생성하고 memcpy 로 데이터를 직접 복사하는것부터 시작할것이다. - 그리고 이후에 고성능 메모리에 vertex data를 복사하기 위해 - 어떻게 staging buffer 를 사용할것인지를 살펴볼것이다. 2. Vertex shader - 일단 vertex shader에서 하드코딩된 부분을 지우자 - vertex shader는 in 키워드를 사용하여 vertex buffer로부터 입력을 받는다. #version 450 layout(location = 0) in vec2 inPositio..
2021.08.14 -
[vk] Drawing triangle - Drawing - Swap chain recreation
Swap chain recreation 1. Introduction - 삼각형을 성공적으로 그렸지만 - 아직 제대로 처리되지 않은 몇가지 상황이 있다. - 1) window surface 가 변경되어, 더이상 swapchain과 surface가 호환이 안될 수 있음. - 2) window size가 변경될 경우 등등 - 이러한 이벤트들을 잡아내고, swapchain을 다시 만들어야한다. 2. Recreating the swap chain - recreateSwapChain 이 함수는 createSwapChain 를 포함한 - swap chain 과 window size 가 관련된 객체를 생성하는 함수를 전부 호출한다. void recreateSwapChain() { vkDeviceWaitIdle(devi..
2021.08.11 -
[vk] Drawing triangle - Drawing - Rendering and presentation
Rendering and presentation -모든것이 합쳐지는 챕터 1. Setup - mainLoop 에서 호출되어 삼각형을 표시하는 함수를 작성할것임 - drawFrame 함수를 만들것임 void mainLoop() { while (!glfwWindowShouldClose(window)) { glfwPollEvents(); drawFrame(); } } ... void drawFrame() { } 2. Synchronization - drawFrame이 함수는 다음과 같은 작업을 수행하도록 작성할것임. Acquire an image from the swap chain Execute the command buffer with that image as attachment in the framebuf..
2021.08.11 -
[vk] Drawing triangle - Drawing - Command buffers
1. Command buffers - Vulkan의 commands (drawing operations and memory transfers) - 함수호출하여 직접적으로 사용하지 않음 - 수행하고자 하는 모든 operations을 command buffer에 record 해야함. - 이후에는 mainloop에서 Vulkan에게 실행해주라고 명령만해주면됨. 장점 - 미리 drawing commands을 설정할 수 있다. - multiple threads을 사용할 수 있다. 2. Command pools - command buffers을 만들기전에 command pool을 생성해야한다. - Command pools 는 buffers을 저장하는데 사용하는 메모리를 관리한다. - command buffers은 ..
2021.08.11