이 문서에서는 여러 샘플 앱을 다운로드하고 컴파일하고 실행하여 Vulkan 그래픽 라이브러리를 시작하는 방법을 설명합니다.
시작하기 전에 적합한 하드웨어 및 플랫폼 버전이 준비되어 있어야 합니다. Vulkan을 지원하며 Android API 수준 24 이상을 실행하는 기기를 사용해야 합니다.
설정 메뉴로 이동한 후 <기기> 정보 > Android 버전을 선택하여 Android 버전을 확인할 수 있습니다. 올바른 하드웨어 및 플랫폼 버전이 설정된 것을 확인한 후에는 필요한 소프트웨어를 다운로드하면 됩니다.
다운로드
시작하기 전에 먼저 여러 도구와 기타 소프트웨어를 다운로드해야 합니다. Windows 호스트에서는 도구 및 소스 코드에 심층적 파일 경로 계층 구조를 사용하지 않는 것이 좋습니다. 이렇게 하면 일부 Windows OS 버전에서 발생하는 파일 경로 제한을 해결할 수 있습니다.
- Android 스튜디오가 아직 없으면 다운로드합니다. Android 스튜디오에는 최신 Android SDK가 포함되어 있습니다.
- Android 스튜디오에서 NDK를 설치하거나 수동으로 NDK를 다운로드합니다.
가져오기
이 섹션에서는 LunarG Vulkan© 저장소를 다운로드하고 API 샘플을 위한 Android 스튜디오 프로젝트를 생성한 후 이러한 프로젝트를 IDE로 가져옵니다.
다음과 같이 터미널을 열고 소스 코드를 개발 디렉터리에 다운로드합니다.
cd dev-directory git clone --recursive https://github.com/LunarG/VulkanSamples.git
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
다음과 같이 환경 변수를 설정하여 Android NDK 및 SDK의 경로를 지정합니다.
export ANDROID_SDK_ROOT=/path/to/sdk-directory export ANDROID_NDK_HOME=/path/to/ndk-directory
샘플의 현재
targetSdk
버전은 26이므로 SDK Manager로 도구를 업데이트해야 할 수 있습니다.Android 스튜디오를 엽니다. File > Open을 선택하고
VulkanSamples/API-Samples/android/build.gradle
을 선택합니다.
프로젝트 창은 그림 1에 표시된 창과 비슷합니다.
그림 1. 가져온 샘플이 표시된 프로젝트 창
컴파일
Android 스튜디오 또는 명령줄에서 프로젝트를 컴파일할 수 있습니다.
Android 스튜디오
- File > Project Structure를 선택합니다. SDK Location을 선택하고 SDK 및 NDK 위치가 설정되었는지 확인합니다.
- Android 스튜디오 프로젝트 패널에서 프로젝트를 선택합니다.
- 빌드 메뉴에서 모듈 <module-name> 만들기를 선택하거나 APK 빌드를 선택하여 APK를 생성합니다.
- 종속 항목 문제가 있으면 해결한 후 컴파일합니다. 그림 2에 표시된 것처럼, 구성 풀다운 메뉴에서 컴파일할 개별 프로젝트를 선택할 수 있습니다.

그림 2. 컴파일할 개별 프로젝트 선택
명령줄
명령줄에서 다음 명령어를 사용하여 프로젝트를 빌드합니다(여전히 VulkanSamples/API-Samples/android 디렉터리에 있는지 확인).
./gradlew build
실행
프로젝트를 실행하려면 실행 > <project-name> 실행을 선택하여 실행할 APK를 선택합니다.
APK를 디버그하려면 실행 > <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가 필요하다면 셰이더 컴파일러를 참고하세요.