在 Android 上为片段着色器使用 3D 纹理
Use 3D Texture for Fragment shader on Android
我需要在 Android 的片段着色器中使用 3D 纹理,但出现编译错误。
我用的是GLES3.0,我觉得应该支持3D贴图。
我的着色器如下所示:
#extension GL_OES_texture_3D : enable
precision mediump float;
uniform sampler3D u_Texture;
没有#extension GL_OES_texture_3D : enable
我得到错误
L0003: Keyword 'sampler3D' is reserved
使用 #extension GL_OES_texture_3D : enable
,出现错误
S0032: no default precision defined for variable 'u_Texture'
即使我使用uniform medium float sampler3D u_Texture
,我也得到了
Expect, found sampler3D
error.
希望得到您的帮助!
非常感谢。
YL
首先,您必须在着色器程序的第一行通过版本限定符指定 glsl 版本:
#version 300 es
精度限定符可以是 highp
、mediump
或 lowp
,并且必须在类型之前指定。类型是 sampler3D
而不是 float
.
宣言
uniform medium float sampler3D u_Texture
有 2 种类型(float
和 sampler3D
),因此会导致语法错误。
必须
#version 300 es
uniform medium sampler3D u_Texture;
或使用默认精度限定符
#version 300 es
precision mediump sampler3D;
uniform sampler3D u_Texture;
(当然precision mediump float;
也必须指定)
见OpenGL ES Shading Language 3.20 Specification - 4.7.3. Precision Qualifiers
我需要在 Android 的片段着色器中使用 3D 纹理,但出现编译错误。 我用的是GLES3.0,我觉得应该支持3D贴图。 我的着色器如下所示:
#extension GL_OES_texture_3D : enable
precision mediump float;
uniform sampler3D u_Texture;
没有#extension GL_OES_texture_3D : enable
我得到错误
L0003: Keyword 'sampler3D' is reserved
使用 #extension GL_OES_texture_3D : enable
,出现错误
S0032: no default precision defined for variable 'u_Texture'
即使我使用uniform medium float sampler3D u_Texture
,我也得到了
Expect, found sampler3D error.
希望得到您的帮助!
非常感谢。
YL
首先,您必须在着色器程序的第一行通过版本限定符指定 glsl 版本:
#version 300 es
精度限定符可以是 highp
、mediump
或 lowp
,并且必须在类型之前指定。类型是 sampler3D
而不是 float
.
宣言
uniform medium float sampler3D u_Texture
有 2 种类型(float
和 sampler3D
),因此会导致语法错误。
必须
#version 300 es
uniform medium sampler3D u_Texture;
或使用默认精度限定符
#version 300 es
precision mediump sampler3D;
uniform sampler3D u_Texture;
(当然precision mediump float;
也必须指定)
见OpenGL ES Shading Language 3.20 Specification - 4.7.3. Precision Qualifiers