Vulkan 설치

이 문서에서는 여러 샘플 앱을 다운로드하고 컴파일하고 실행하여 Vulkan 그래픽 라이브러리를 시작하는 방법을 설명합니다.

시작하기 전에 적합한 하드웨어 및 플랫폼 버전이 준비되어 있어야 합니다. Vulkan을 지원하며 Android API 수준 24 이상을 실행하는 기기를 사용해야 합니다.

설정 메뉴로 이동한 후 <기기> 정보 > Android 버전을 선택하여 Android 버전을 확인할 수 있습니다. 올바른 하드웨어 및 플랫폼 버전이 설정된 것을 확인한 후에는 필요한 소프트웨어를 다운로드하면 됩니다.

다운로드

시작하기 전에 먼저 여러 도구와 기타 소프트웨어를 다운로드해야 합니다. Windows 호스트에서는 도구 및 소스 코드에 심층적 파일 경로 계층 구조를 사용하지 않는 것이 좋습니다. 이렇게 하면 일부 Windows OS 버전에서 발생하는 파일 경로 제한을 해결할 수 있습니다.

  1. Android 스튜디오가 아직 없으면 다운로드합니다. Android 스튜디오에는 최신 Android SDK가 포함되어 있습니다.
  2. Android 스튜디오에서 NDK를 설치하거나 수동으로 NDK를 다운로드합니다.

가져오기

이 섹션에서는 LunarG Vulkan© 저장소를 다운로드하고 API 샘플을 위한 Android 스튜디오 프로젝트를 생성한 후 이러한 프로젝트를 IDE로 가져옵니다.

  1. 다음과 같이 터미널을 열고 소스 코드를 개발 디렉터리에 다운로드합니다.

    cd dev-directory
    git clone --recursive https://github.com/LunarG/VulkanSamples.git
    
  2. Android에서 빌드의 다음 명령에 따라 Android용 샘플 프로젝트를 생성합니다.

    cd VulkanSamples/API-Samples
    cmake -DANDROID=ON -DABI_NAME=abi
    cd android
    python3 compile_shaders.py
    

    지원되는 ABI에는 다음이 포함됩니다.

    • armeabi-v7a
    • arm64-v8a
    • x86
    • x86_64
  3. 다음과 같이 환경 변수를 설정하여 Android NDK 및 SDK의 경로를 지정합니다.

    export ANDROID_SDK_ROOT=/path/to/sdk-directory
    export ANDROID_NDK_HOME=/path/to/ndk-directory
    

    샘플의 현재 targetSdk 버전은 26이므로 SDK Manager로 도구를 업데이트해야 할 수 있습니다.

  4. Android 스튜디오를 엽니다. File > Open을 선택하고 VulkanSamples/API-Samples/android/build.gradle을 선택합니다.

Project 창은 그림 1에 표시된 창과 비슷합니다.

샘플을 Android 스튜디오로 가져온 후의 Project 창

그림 1. 가져온 샘플이 표시된 Project 창

컴파일

Android 스튜디오 또는 명령줄에서 프로젝트를 컴파일할 수 있습니다.

Android 스튜디오

  1. File > Project Structure를 선택합니다. SDK Location을 선택하고 SDK 및 NDK 위치가 설정되었는지 확인합니다.
  2. Android 스튜디오 프로젝트 패널에서 프로젝트를 선택합니다.
  3. 빌드 메뉴에서 모듈 <module-name> 만들기를 선택하거나 APK 빌드를 선택하여 APK를 생성합니다.
  4. 종속성 문제가 있으면 해결한 후 컴파일합니다. 그림 2에 표시된 것처럼, 구성 풀다운 메뉴에서 컴파일할 개별 프로젝트를 선택할 수 있습니다.
  5. 구성 풀다운에서 drawcube 프로젝트 선택

    그림 2. 컴파일할 개별 프로젝트 선택

명령줄

명령줄에서 다음 명령어를 사용하여 프로젝트를 빌드합니다(여전히 VulkanSamples/API-Samples/android 디렉터리에 있는지 확인).

./gradlew build

실행

프로젝트를 실행하려면 실행 > <project-name> 실행을 선택하여 실행할 APK를 선택합니다.

APK를 디버그하려면 Run > Debug <project-name>을 선택합니다. 예를 들어 drawcube의 경우 15-draw_cube를 실행합니다.

샘플은 대부분 하나의 특정 API 사용 방법을 보여주는 간단한 기능을 실행하며 실행 후에는 대부분 자동으로 중지됩니다. drawcube 예는 시각적으로 흥미로운 여러 예 중 하나입니다. 이 예를 실행하면 그림 3의 이미지가 표시됩니다.

실행에 성공하면 여러 색상으로 된 큐브가 표시됨

그림 3. 성공적으로 컴파일된 프로그램 실행 및 표시 생성

동적 로더 사용

샘플은 vulkan_wrapper.h/cpp에 정의된 동적 로더 도우미 함수에서 dlopen()dlsym()을 사용하는 Vulkan API 포인터를 검색합니다. vulkan.so와의 정적인 연결 대신 이렇게 처리됩니다.

이 로더를 사용하면 API 레벨 23 이전 버전의 플랫폼에 코드를 링크할 수 있습니다. API 수준 23 이전 버전은 vulkan.so 공유 라이브러리를 포함하지 않지만 Vulkan API를 지원하는 기기에서 실행할 수 있습니다.

다음 스니펫은 동적 로더를 사용하는 방법을 보여줍니다.

#include "vulkan_wrapper.h" // Include Vulkan_wrapper and dynamically load symbols.
...
// Before any Vulkan API usage,
InitVulkan();

추가 리소스

  • Vulkan 사양

    Khronos Group은 Vulkan 사양을 유지합니다. 전체 사양, 학습 및 가이드는 Vulkan 홈페이지를 참조하세요.

  • Shaderc

    NDK의 Shaderc 코드는 Shaderc 저장소의 다운스트림입니다. 최신 Shaderc가 필요하다면 셰이더 컴파일러를 참조하세요.