본문 바로가기
Vulkan

0. Vulkan을 시작하면서.....

by SimonLee 2024. 6. 7.

벌칸 공식 홈페이지 입니다.

https://vulkan.lunarg.com/

 

Vulkan은 최신 GPU 파이프라인 아키텍처를 위한 혁신적인 고성능 3D 그래픽스 및 컴퓨팅 API 입니다.

또한 예측가능한 동작을 보장하고 명시적인 API로써

지연이나 걸림 현상 없는 부드러운 렌더링 속도를 갖도록 해줍니다.

 

이게 뭔소리지 ? 하는 분들을 위해... 썰을 풀어보겠습니다.

 

3D 프로그램을 만들때 업계에서 대부분 게임엔진 Unity, Unreal을 사용합니다.

포션이 적기는 하지만 자체 엔진을 개발하는 곳도 있고,

임베디드 업계에서는 직접 OpenGLES를 사용하여 앱개발을 합니다.

 

게임엔진에서 제공하는 UI를 통해 우리는 쉽게 3D Application을 만들수가 있는데요

그래픽을 사용하는 컴포넌트들이 백엔드 API를 통해 구현이 되어 있습니다.

백엔드 API는 OpenGL, Vulkan, DirectX, Metal 같은 것들을 지원하는데요.

게임엔진에서 구현할 플랫폼을 선택하게 되어있죠 ?^^~

 

각 API들에 대해서 살펴보면.....

DirectX는 윈도우에서만 사용되고, Metal은 Mac에서만 사용할 수 있습니다.

Vulkan은 모든 플랫폼에서 사용 가능합니다. 

종속성이 있는 부분을 다 분리를 시켰기 때문이죠.

 

OpenGL는 순수 스테이트 머신 모델로써, 단일 스레드 처럼 동작합니다.

멀티렌더링을 하려고 해도 컨텍스트를 스왑하는 방식으로 구현을 해야 합니다.

효율성 측면에서 성능이 좋지 않습니다.

또한 OpenGL API들은 암묵적 API라고도 하며, 리소스 관리는 드라이버가 담당을 하게 됩니다.

우리가 수정을 할수 없다는 말입니다.

그렇기 때문에 리소스를 추적해야 하는 부하도 생기게 되고,

예측하지 못한 동작을 하거나 잘못된 렌더링에도 영향을 받을 수 있습니다.

 

Vulkan API를 사용하게 되면

장점이 다음과 같습니다.

1. 리소스에 직접 접근이 가능하여, 드라이버 부하와 CPU 사용량이 감소합니다.

2. 멀티스레드 확장성이 뛰어나서 사용자가 멀티 스레딩 기능을 완전히 활용할 수 있도록 합니다.

3. 명시적인 API이기 때문에 직관적이고 예측가능한 동작을 얻게 합니다.

 

단점은 다음과 같습니다.

매우 어렵습니다.

 

 

하지만 널 정복한다...

 

제일 먼저 벌칸 설치하는 법부터 생각해봅니다. ( platform : android )

1) 안드로이드 스튜디오 설치

2) 안드로이드 NDK 설치

- Tools / SDKManager / SDK Tools / NDK(side by side) 클릭 후 Apply

3) 안드로이드 New Project - Game Activity 선택

4) 필요한 없는 코드 삭제

5) <vulkan/vulkan.h>를 헤더파일에 추가해 준다.

6) CmakeFile 수정.

find_package(Vulkan REQUIRED)

target_link_libraries(vulkan2
        .....
        Vulkan::Vulkan
)

 

 

벌칸 API특징은 다음과 같다.

1) 벌칸의 함수의 이름은 모두 vK* 로 시작한다.

2) 함수는 instance 기반 함수와 장치기반 함수로 나뉘어 지게 된다.

3) 함수에 Enumerate가 들어간 함수는 인스턴스 함수이며, 쿼리결과는 Properties.

4) 함수에 Get이 들어간 함수는 장치기반 함수이고, 하나의 리턴 값...

 

 

벌칸 App 구현 순서는 아래와 같습니다.

 

 

다음 챕터부터 하나씩 살펴 봅니다.

Here we go ~

'Vulkan' 카테고리의 다른 글

5. Presentation And Synchronize ( Fence, Semaphore, Event )  (0) 2024.06.27
4. Pipeline Barrier And Image Layout  (0) 2024.06.24
3. Command buffer  (0) 2024.06.21
2. Surface And SwapChain  (1) 2024.06.11
1. Vulkan Instance And device  (0) 2024.06.09