[Vulkan Tutorial] 03-Development Environment

목차: 01-Overview (Link)
이전 글: 02-Vulkan Overview (Link)
다음 글: 04-Create Sub-Module and Base Code (Link)


[Android] Vulkan Development Environment

Android SDK/NDK를 다운받아서 Vulkan Example을 빌드하는 방법에 대해서 정리하였다. 해당 설정 방법은 Ubuntu Linux, Window, Mac에서 모두 테스트해 보았고 정상적으로 빌드되는 것까지 확인하였다. 이 글의 내용은 출처 2에 있는 내용을 기준으로 작성하였다.

먼저 Android Studio를 다운받아서 설치한다. 구글에서 검색하면 다운받을 수 있다. Android Studio 최초 설정 이후 그림 1과 같이 “Cmake”, “SDK”, “NDK”를 설치한다. 아래 화면은 Android Studio에서 SDK Manager을 클릭하면 나타나는 화면이다. SDK/NDK 설치 위치(Path)를 기억해두어야 한다. SDK/NDK 설치 위치를 확인하는 방법은 그림 1에 표시되어 있다.

MK: 저의 경우 Android Studio를 사용해서 SDK/NDK를 설치하였다. 직접 다운받아서 설치해도 빌드가 되는 것을 확인하였다. 원한다면 SDK/NDK를 직접 다운받아서 설치해서 문제는 없다.

그림 1: Android SDK/NDK 설치

다음은 Shaderc를 빌드해야 한다. Shaderc는 아마도 Vulkan Shader을 컴파일해서 Byte Code로 변경해주는 컴파일러를 의미하는 것 같다. Shaderc 빌드하는 방법은 “NDK_ROOT/sources/third_party/shaderc/”로 이동하여 아래 CMD를 실행하면 된다.

MK: Android Studio를 사용해서 NDK를 설치한 경우 “NDK_ROOT” 설치 위치는 SDK 설치 폴더 아래에 “/ndk/VERSION_NUMBER (예: /ndk/20.1.5948944)”에 위치한다.

../../../ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk APP_STL:=c++_static APP_ABI=all NDK_TOOLCHAIN_VERSION:=clang libshaderc_combined -j16

Linux/Mac의 경우

../../../ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk APP_STL:=c++_static APP_ABI=all NDK_TOOLCHAIN_VERSION:=clang libshaderc_combined -j16

Window의 경우

..\..\..\ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk ^ APP_ABI=all APP_PLATFORM=android-24 APP_STL=c++_static ^ -j8 clean libshaderc_combined

위와 같이 Cmake, SDK, NDK, Shaderc 설정을 모두 완료하면 다음은 Vulkan Example 파일을 다운로드할 차례이다. Vulkan Sample 코드는 아래 git CMD를 사용해서 다운로드할 수 있다.

git clone --recursive https://github.com/LunarG/VulkanSamples.git

위 CMD를 사용해서 파일을 다운받으면 “VulkanSamples”라는 폴더가 생성된 것을 확인 할 수 있다. 다음은 Example 코드를 빌드하기 위해서 “VulkanSamples/API-Samples”로 이동한다. “API-Samples” 폴더에서 아래 CMD를 사용해서 안드로이드 Sample을 생성한다.

cmake -DANDROID=ON -DABI_NAME=arm64-v8a

MK: “-DABI_NAM=” 다음에 “armeabi-v7a”, “arm64-v8a”, “x86”, “x86_64” 으로 설정을 변경 할 수 있다. 저의 경우 갤럭시 단말에서 테스트할 예정이라 “arm64-v8a”를 선택하였다. 추가로 cmake는 “SDK” 설치 폴더 아래에 cmake 폴더 안에 설치되어 있다. NDK와 동일하게 “cmake/VERSION_NUMBER” 형태이다. 해당 폴더를 환경 변수에 추가하면 된다. (실제 cmake 실행 파일은 “cmake/VERSION_NUMBER/bin” 폴더에 있다. 환경 변수에 추가하는 경우 “/bin” 폴더까지 추가해야 한다).

이제 Android Studio를 사용해서 Android Project를 Import 하면 된다. Project 위치는 “VulkanSamples/API-Smaples/android”이다. 프로젝트 열기를 선택해서 해당 위치를 클릭하면 아래 그림2와 같이 Project가 열리는 것을 확인 할 수 있다.

그림 2: Vulkan Sample 프로젝트 로딩 화면

위에 설명한 순서대로 설치를 진행하였다면 아마도 그림 2와 같은 에러 메시지가 나오는 것을 확인 할 수 있다. 출처 1을 참조하여서 따라 한 경우 에러 메시지가 출력되지 않고 정상적으로 프로젝트가 로딩되었을 수도 있다. 에러 메시지가 발생하는 이유는 “SDK”, “NDK” 위치 설정하지 않았기 때문이다.

그림 2의 에러 메시지를 제거하기 위해서 “Gradle Scripts” 아래 있는 “local.properties” 파일에 아래와 같이 SDK/NDK 위치를 설정해야 한다. SDK/NDK 위치는 그림 1에서 확인 할 수 있다.

sdk.dir=/ROOT/Android/sdk
ndk.dir=/ROOT/Android/sdk/ndk/20.1.5948944

“local.properties”에 SDK/NDK를 설정 후 “Make Project”를 실행하면 에러 메시지가 제거되면서 필요한 파일(예: Gradle 등)들을 다운로드한다.

MK: Android Studio를 쓰고 싶지 않은 경우 “Gradle 5.1.1” 버전 이상을 다운받아서 빌드해도 된다. 현시점(2020년 1월)에 다운받은 Vulkan Sample의 경우 “Gradle 5.1.1” 이상에서 빌드가 가능하다. “VulkanSamples/API-Samples/andoird” 폴더 아래에 “local.properties” 파일에 SDK/NDK만 설정하면 정상적으로 빌드되는 것을 확인 할 수 있다. 빌드하는 방법은 “android” 폴더 아래에서 아래 CMD를 실행하면 된다.

./gradlew build

위 설명에 따라서 모든 설정을 완료되면 Sample 코드 빌드가 가능하다. 15번 예제인 “15-draw_cube”을 빌드해서 APK를 설치하면 아래 그림 3과 같은 이미지 결과를 확인 할 수 있다.

그림 3: draw_cube 예제 코드 실행 화면

출처

  1. https://developer.android.com/ndk/guides/graphics/getting-started

Leave a Comment