Skip to content

0. Vulkan 소개와 주의사항


목차

  • Vulkan이란
  • 굳이 벌칸을 배워야 하는가?
  • 알아야 할 사전지식
  • 개발환경 세팅
  • 게시할 내용 정리

Vulkan이란

Vulkan(이하 벌칸)은 CPU오버헤드가 심각한 OpenGL을 대체하기 위한

최신식 + 저수준 + 크로스 플랫폼 그래픽스 API입니다.

OpenGL의 구조를 최신 프로세서에 맞게 갈아엎었고,

그 때문에 알아야 할 지식과 개념들이 매우 많아졌습니다.

굳이 벌칸을 배워야 하는가?

OpenGL의 경우부터, 써야하는 이유를 살펴봅시다.

GL을 써야 하는이유

  • 구현 및 테스트가 비교적 간단하다.
  • 매우 많은 기기에서 지원한다.
  • 고사양 게임이 아닌 경우 이걸로도 충분하다.

GL을 쓰면 안되는 이유

  • 멀티코어 활용이 불가능하다(전기 소모량이 많아진다).
  • 디버깅이 어렵다.
  • 언젠가는 완전히 대체된다.

벌칸의 경우, 위의 GL의 장단점과 정반대가 됩니다.

벌칸을 써야 하는 이유

  • 멀티코어 활용이 가능하다(효율성을 최대로 끌어낸다).
  • 디버깅이 수월하다.
  • 향후 몇 십 년간 대체되지 않는다.

벌칸을 쓰면 안되는 이유

  • 구현 및 테스트가 번거롭다.
  • 기기 간 호환성이 아직은 그다지 매끄럽지 못하다.
  • 고사양 게임이 아닌 경우 굳이 쓸 이유가 없다.

사실 '게임 개발' 이라는 주제를 공부하고 싶은 사람들에게는

벌칸을 공부하는 것이 칼 뽑아서 닭을 안잡고 무를 써는 느낌일 것인데 -

게임을 개발하기 위해서는 물론 그래픽스 지식이 꼭 필요하지만,

재미있는 게임을 만들어가는 건 완전히 다른 영역입니다.

그래서 필자는 이렇게 말하고 싶습니다.

  • OpenGL에 숨겨둔 GPU의 내부 인터페이스 구조를 알고싶거나
  • AAA 게임(엔진)을 만들고 최적화하는 것이 목적인

사람만 공부해 보는 것을 추천합니다.

그래서 벌칸을 배워야 하냐고요?

제 대답은 '목표에 따라 다르지만, 게임 개발에 한해서는

아직까지는 배울 필요 없다' 입니다.

알아야 할 사전 지식

기본적인 사전 지식은 OpenGL 섹션과 동일합니다.

단, 저는 벌칸을 공부하기 전에

OpenGL의 개념들 중 '프레임버퍼' 까지는 이해하고 오는 것을 추천합니다.

GL의 프레임버퍼가 모여 여러 렌더 패스가 되듯이,

VK에는 렌더 페스와 프레임버퍼가 같이 모여서 렌더 그래프를 만드는데 -

이 이후부터 진행되는 순수 '렌더링' 관련 설정 / 코드는

OpenGL과 꽤나 유사한 편이기 때문입니다.

또한 렌더링 기술에 쓰이는 수학적 공식이나 모델들은

무슨 API를 쓰냐에 상관 없이 다 똑같이 적용되고, 적용할 수 있습니다.

다시말해 벌칸만의 차이점을 확실히 체감하는 게 중요합니다.

개발환경 세팅

먼저 Vulkan을 지원하는 그래픽카드가 필요합니다.

2020년대 이후에 출시되는 노트북의 CPU는 거의 모두 지원할 겁니다.

다만 인텔 Iris Xe 같은 내장 그래픽카드는 불가능합니다.

엔비디아 RTX 시리즈 나 인텔 Arc 같은 외장 그래픽카드를 준비하세요.

그래픽카드가 준비되었다면,

LunarG 공식 Vulkan SDK 다운로드 페이지에서

1.4x버전 이상의 SDK를 다운받아 주세요.

SDK 설치가 완료되었다면,

C:/VulkanSDK/1.4.XXXX/Bin 경로에 들어가서

vkcube.exe 를 실행해서 회전하는 3차원 큐브가

정상적으로 렌더링되는지 확인해 주세요.

또 vulkaninfoSDK.exe 를 실행해서,

가장 최상단에

Vulkan Instance Version: 1.4.XXXX

와 같이 벌칸 인스턴스 버전이 1.4 이상인지 확인해 주세요.

게시할 내용 정리

  • GLFW를 Vulkan에 대응하도록 전환 (GLFW에서 제공받는 VkSurface)
  • 인스턴스 생성하기
  • 디버깅 메신저 생성하기