Vulkan 삼각형 예제
QVulkanWindow 와 Vulkan API를 사용한 렌더링의 기본 사항을 보여줍니다.
'Hello Vulkan 삼각형 예제'는 삼각형을 렌더링하기 위해 버텍스 셰이더와 프래그먼트 셰이더를 포함한 전체 그래픽 파이프라인을 생성합니다.

시작
Vulkan을 사용하는 각 Qt 애플리케이션은 애플리케이션 수준의 상태를 캡슐화하고 Vulkan 라이브러리를 초기화하는 애플리케이션 컨트롤러( Vulkan instance )를 반드시 포함해야 합니다.
QVulkanWindow 은 항상 QVulkanInstance 과 연관되어야 하므로, 이 예제에서는 창 생성 전에 인스턴스를 생성합니다. 또한 QVulkanInstance 객체는 창보다 오래 유지되어야 합니다.
QVulkanInstance inst;
inst.setLayers({ "VK_LAYER_KHRONOS_validation" });
if (!inst.create())
qFatal("Failed to create Vulkan instance: %d", inst.errorCode());이 예제는 지원되는 경우 유효성 검사 레이어를 활성화합니다. 요청된 레이어가 존재하지 않으면 요청이 무시됩니다. 추가 레이어와 확장 기능도 이와 유사한 방식으로 활성화할 수 있습니다.
VulkanWindow w;
w.setVulkanInstance(&inst);
w.resize(1024, 768);
w.show();인스턴스 준비가 완료되면 이제 창을 생성할 차례입니다. ` w `는 스택에 상주하며, ` inst` 이후에 선언된다는 점에 유의하십시오.
QVulkanWindow의 서브클래스
QVulkanWindow 에 사용자 정의 기능을 추가하려면 서브클래싱을 사용합니다. 이는 QOpenGLWindow 및 QOpenGLWidget 의 기존 패턴을 따릅니다. 그러나 QVulkanWindow 는 별도의 QVulkanWindowRenderer 객체를 사용합니다.
QVulkanWindow 서브클래스는 팩토리 함수 QVulkanWindow::createRenderer()을 재구현합니다. 이 함수는 단순히 QVulkanWindowRenderer 서브클래스의 새 인스턴스를 반환합니다. window 객체를 통해 다양한 Vulkan 리소스에 접근할 수 있도록, window에 대한 포인터가 전달되어 생성자를 통해 저장됩니다.
class VulkanWindow : public QVulkanWindow
{
public:
QVulkanWindowRenderer *createRenderer() override;
};실제 렌더링
QVulkanWindow 서브클래스는 QVulkanWindowRenderer::startNextFrame()을 재구현하여 드로우 호출을 큐에 추가합니다. 이 작업이 완료되면 QVulkanWindow::frameReady()을 다시 호출해야 합니다. 이 예제에는 비동기 명령어 생성이 없으므로 frameReady() 호출은 startNextFrame()에서 직접 수행됩니다. 지속적인 업데이트를 얻기 위해, 이 예제는 다시 그리기를 예약하기 위해 단순히 QWindow::requestUpdate()를 호출합니다.
이 예제는 또한 멀티샘플 앤티앨리어싱을 시연합니다. QVulkanWindow::supportedSampleCounts()에서 보고된 지원 샘플 수를 기반으로, 이 예제는 8x, 4x 또는 멀티샘플링 없음 중에서 선택합니다. QVulkanWindow::setSamples()를 통해 구성이 완료되면, QVulkanWindow 가 나머지 작업을 처리합니다. 추가적인 멀티샘플 컬러 버퍼가 자동으로 생성되며, 각 프레임의 기본 렌더 패스가 끝날 때 스왑체인 버퍼로의 변환이 수행됩니다.
예제 실행
다음 경로에서 예제를 실행할 수 있습니다:
- Qt Creator
Welcome 모드를 열고 Examples 에서 예제를 선택하십시오. 자세한 내용은 Qt Creator: 튜토리얼: 빌드 및 실행을 참조하십시오.
- Qt Extension for Visual Studio Code
Command Palette 에서 ‘ Qt: Open Qt examples ’ 명령을 실행하고 목록에서 예제를 선택하십시오. 자세한 내용은 Qt Extension for Visual Studio Code: 튜토리얼: 빌드 및 실행을 참조하십시오.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.