最近在学习Vulkan
,根据Google
官方给出的文档,是存在一些问题的,总结一下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 官方文档说要检出 git clone https://github.com/googlesamples/vulkan-basic-samples.git # 实际上 vulkan-basic-samples.git 是 VulkanSamples.git 的一个fork,google简化了部分编译流程 # vulkan-basic-samples.git检出后,直接用 Android Studio打开即可 # https://github.com/SaschaWillems/Vulkan.git也存在一个例子工程 # 但是貌似根正苗红的是VulkanSamples这个例子 $ git clone https://github.com/LunarG/VulkanSamples.git $ cd VulkanSamples $ cd API-Samples # 最后在当前目录下生成一个 android 的目录,用Android Studio导入这个目录下的工程 # 也就是 "VulkanSamples/API-Samples/android" 这个目录是我们的工程目录 $ cmake -DANDROID=ON -DABI_NAME=armeabi-v7a |
如果代码下载不成功,可以本站下载一份拷贝。 点击这里下载 VulkanSamples vulkan-basic-samples
Android Studio
导入代码的时候,需要使用Import Project(Gradle,Eclipse ADT,etc)
这个选项导入工程,否则会出现工程无法调试的问题。
如下图:
如果导入工程的时候,出现下面的界面,请按照下图指示进行选择
注意,编译出来的例子,有些只是代码流程示例,没有显示,屏幕是黑屏,这个并不是错误,只需要选择其他能显示的工程即可。
比如下图所示的draw_textured_cube
这个例子是有显示的。
如果编译的时候出现如下错误信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
ninja: error: '~/Library/Android/sdk/ndk-bundle/sources/third_party/shaderc/libs/c++_static/armeabi-v7a/libshaderc.a', needed by '../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libvulkan_sample.so', missing and no known rule to make it :API-Samples/android/:enumerate_devices_adv:externalNativeBuildDebug FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':API-Samples/android/:enumerate_devices_adv:externalNativeBuildDebug'. > Build command failed. Error while executing process ~/Library/Android/sdk/cmake/3.6.4111459/bin/cmake with arguments {--build ~/Source/vulkan-basic-samples/API-Samples/android/enumerate_devices_adv/.externalNativeBuild/cmake/debug/armeabi-v7a --target vulkan_sample} ninja: error: '~/Library/Android/sdk/ndk-bundle/sources/third_party/shaderc/libs/c++_static/armeabi-v7a/libshaderc.a', needed by '../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libvulkan_sample.so', missing and no known rule to make it * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0. See https://docs.gradle.org/4.6/userguide/command_line_interface.html#sec:command_line_warnings BUILD FAILED in 10s 155 actionable tasks: 154 executed, 1 up-to-date |
则说明NDK
目录下的工程没有编译,导致无法正确的找到链接文件。
需要执行如下命令编译:
1 2 3 4 5 6 7 8 9 |
# ${ndk.dir} 为NDK的安装目录 $ cd ${ndk.dir}/sources/third_party/shaderc/ # 这一步的编译特别耗时,好消息是只需要执行一次就可以 $ ../../../ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk \ APP_STL:=c++_shared APP_ABI=all libshaderc_combined # 这一步就非常快了 $ ../../../ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk APP_STL:=c++_static APP_ABI=all libshaderc_combined |