2016-05-10 33 views
2

我想使用texture2D()從計算着色器中的sampler2d紋理讀取值。在PC它工作正常,但Android的移動設備上(用的版本310個ES)編譯爲同一代碼失敗與如下因素的錯誤:texture2D與android手機上的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(或更高版本),您可以使用sampler2D(或sampler2DShadow)從紋理或image2D中進行採樣以在計算着色器中讀取和寫入。

+0

我在運行時編譯它們。 – markwalberg

+0

如上所述,那麼不要使用texture2D,因爲它只能在Vulkan上從採樣器中分離圖像。 如果要在計算着色器中讀取和/或寫入圖像數據,請改爲使用image2D。 –