2016-05-10 6 views
2

私はtexture2D()を使用して、計算シェーダのsampler2dテクスチャから値を読み取ろうとしています。 PC上では正常に動作しているが、(バージョン310個のESを使用して)Androidモバイルデバイス上で同じコードのコンパイルがfolowingのエラーで失敗します。texture2Dはアンドロイド携帯電話のCompute Shadersと互換性がありませんか?

'texture2D' : type is for Vulkan api only 

は、計算シェーダと、このコール何とか対応していませんか?

答えて

4

あなたのシェーダをコンパイルするためにどのツールを使用するのか、または実行時にコンパイルするのはあなたの質問から100%はっきりしていませんか? texture2Dは、OpenGL(ES)シェーダでサンプリングするために推奨されていません。

Vulkan(メッセージによると)には、サンプラーから分離されたテクスチャを読み込むために使用される "texture2D"があります(詳細はhttps://www.khronos.org/registry/vulkan/specs/misc/GL_KHR_vulkan_glsl.txtを参照してください)。

OpenGL ES 2.x以降では、計算シェーダでの読み込みと書き込みのためにtextureまたはimage2Dからサンプリングするためにsampler2D(またはsampler2DShadow)を使用します。

+0

実行時にコンパイルします。 – markwalberg

+0

上記のように、画像がサンプラーから分離されているVulkanでのみ利用できるため、texture2Dは使用しないでください。 計算シェーダで画像データを読み書きする場合は、代わりにimage2Dを使用してください。 –

関連する問題