2017-07-18 9 views
0

現在、VulkanのチュートリアルやサンプルはすべてAndroidプラットフォームでNativeActivityを使用しているようです。 AndroidでJava Activityを使ってVulkanを使用できるかどうかを知りたいですか?AndroidプラットフォームでJavaアクティビティでVulkanを使用することはできます

+0

純粋なJavaプロジェクトでVulkanを使用することを意味しますか?もしそうなら、わからない。 レンダリングのためにネイティブライブラリ(c/C++コード)を呼び出すJavaアクティビティでVulkanを使用することを意味する場合は、可能です。出荷されているタイトルではそうしています。残念ながら、私は詳細を提供する自由がないし、設定方法を示すサンプルも知っている。 – Columbo

+0

lwjglには俗語のラッパーがありますが、私はアンドロイドの互換性についてはわかりません –

+0

あなたのアドバイスをありがとう。 –

答えて

2

はい、独自のアクティビティサブクラスでVulkanを使用できます。 AndroidにはVulkan用のJava言語バインディングがないため、JNIまたはサードパーティのJava Vulkanライブラリ(JNIを使​​用している)を使用する必要があります。

ビュー階層にはSurfaceViewが含まれている必要があり、Surfaceholder.Callback#surfaceChangedコールバックを取得するとSurfaceを取得できます。自分でJNIをやっている場合は、ANativeWindow_fromSurfaceと呼んでSurfaceからANativeWindowを取得し、それを使ってVkSurfaceKHR/VkSwapchainKHRを作成することができます。

注意すべき点は、VkAcquireNextImageKHRを呼び出すときにメインのUIスレッドをブロックしないようにすることです。長い間ブロックしない場合にのみ呼び出すようにアレンジするか、フレームループを別のスレッドに配置してください。

関連する問題