그래픽스/vk(28)
-
[vk] Drawing triangle - setup - Validation layers
What are validation layers? - Vulkan API 는 드라이버 오버 헤드를 최소화하자는 목표를 바탕으로 설계됨. - 이 목표중 하나는 API에서 기본적으로 오류검사를 하지않는다는것 - 간단한 실수조차 명시적으로 처리 x => will simply result in crashes or undefined behavior - vulkan은 모든것에대해 명시해줘야하기 때문에 실수하기 쉬움 - 이러한 검사를 API에 추가할 수 있음 "validation layers" - 우아한 vulkan의 멋진 시스템 - 유효성 검사 계층은 선택적 구성요소 - Vulkan 함수를 후킹하여 추가적인 동작을 수행하도록함 - 일반적인 operations은 다음과 같다 Checking the values of ..
2021.08.05 -
[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