관리 메뉴

cyphen156

자체엔진 개발 중간 기록 : Dx11.dll -> Vulkan.dll 렌더러 모듈 교체 테스트 본문

프로젝트/CyphenEngine

자체엔진 개발 중간 기록 : Dx11.dll -> Vulkan.dll 렌더러 모듈 교체 테스트

cyphen156 2026. 7. 1. 20:00

https://youtu.be/BsWgU-6Eljs

 

이 글은 벌칸 초기화에 대해서 상세히 다루지 않습니다. 

메인 타겟 렌더러는 여전히 dx11이라서

벌칸은 리눅스 포팅용으로 초기화 정도만 건드리고 갈 생각입니다.

 

솔직하게 대강 흐름정도만 보고 코드를 완벽하게 이해하지는 못햇습니다.

코덱스가 거의 다하고 초기화에 대해 배우고있어요.

그래서 경어체로 느낌만 풀어보겟습니다

 

 벌칸 초기화 하고 첫 프레임을 찍었을 때 나오는 Dx11과의 차이점은 분석해보자면, 

Vulkan으로 첫 프레임을 찍어보니, DX11보다 직접 챙겨야 할 것이 훨씬 많았습니다.

DX11에서는 Device, Context, SwapChain, RenderTargetView 정도를 잡고 나면 비교적 빠르게 화면을 찍을 수 있었는데, 

Vulkan은 Instance, Surface, PhysicalDevice, LogicalDevice, Queue, Swapchain, RenderPass, Framebuffer, CommandBuffer, 동기화 객체, Pipeline, Descriptor까지 전부 명시적으로 맞춰야 했습니다.

한마디로 할 게 꽤 많습니다.

Dx11 초기화로도 벅찬 지금으로선 어지러워서 그냥 냅따 코덱스한테 포팅하라고 시켯어요

이번 테스트에서는 CyphenRendererDx11.dll 대신 CyphenRendererVulkan.dll을 로드해도 

엔진 상위 흐름이 유지되는지를 확인했습니다. 

엔진은 그대로 두 장의 텍스처를 로드하고, 

ResourceCommand로 업로드한 뒤, 

DrawTexturedQuad 커맨드로 프레임마다 번갈아 출력했습니다.

다만 화면이 상하좌우 반전되어 보이는 문제가 있었는데, 

이건 렌더러 로직이 완전히 다르다기보다는 

2D 좌표계와 텍스처 좌표계 처리 차이에서 나온 문제로 봐도 됩니다. 

DX11과 Vulkan은 클립 공간, 화면 좌표, 텍스처 UV를 해석하는 기준이 조금씩 다르기 때문에, 

같은 fullscreen quad라도 정점 위치나 UV 매핑을 그대로 가져오면 뒤집혀 보일 수 있습니다.

정리하면 이번 단계의 목표는 

Vulkan 렌더러를 완성하는 것이 아니라, 

Renderer 모듈 ABI 위에서 DX11 DLL을 Vulkan DLL로 교체해도 엔진의 렌더링 흐름이 유지되는지 확인하는 것이었습니다. 

그 결과 Vulkan 초기화 후 실제 텍스처 두 장을 번갈아 렌더링하는 데까지는 성공했습니다.

 

다음 글은 X11로 빌드된 리눅스 GUI 애플리케이션 빌드 테스트가 되지 않을까 싶네요?