iOS中的Sampler3D

iOS中的Sampler3D,ios,opengl-es,glsl,opengl-es-3.0,Ios,Opengl Es,Glsl,Opengl Es 3.0,我刚刚在我的iOS应用程序中加入了OpenGL ES 3.0,它运行良好 我在下面有一个工作着色器: #version 300 es precision mediump float; uniform sampler2D texSampler; uniform float fExposure; in vec2 fTexCoord; in vec3 fColor; out vec4 fragmentColor; void main() { fragmentColor = texture

我刚刚在我的iOS应用程序中加入了OpenGL ES 3.0,它运行良好

我在下面有一个工作着色器:

#version 300 es

precision mediump float;

uniform sampler2D texSampler;
uniform float fExposure;

in vec2 fTexCoord;
in vec3 fColor;

out vec4 fragmentColor;

void main()
{
  fragmentColor = texture(texSampler, fTexCoord) * vec4(fColor, 1.0) * fExposure;
}
现在,我想使用
采样器3D
,因此我有:

#version 300 es

precision mediump float;

uniform sampler3D texSampler;
uniform float fExposure;

in vec3 fTexCoord;
in vec3 fColor;

out vec4 fragmentColor;

void main()
{
  fragmentColor = texture(texSampler, fTexCoord) * vec4(fColor, 1.0) * fExposure;
}
而且它不编译。另外,我在顶点着色器中将
vec2 texCoord
更改为
vec3 texCoord

实际上,
sampler3D
无法识别,但据我所知,它存在于OpenGL ES 3.0中


有什么想法吗?

类似于
float
sampler3D
没有默认精度。将其添加到片段着色器的开头,在那里还可以指定默认的
float
精度:

precision mediump sampler3D;
当然,如果能够提供足够的精度,您可以使用
lowp


ES 3.0/3.1中唯一具有默认精度的采样器类型是
sampler2D
samplerCube
(两者都默认为
lowp
)。对于所有其他类型,必须将精度指定为默认精度,或作为变量声明的一部分。

“它不编译”…着色器编译日志说了什么?我得到编译状态glGetProgramiv(shaderID、GL\u compile\u status和result);结果为0,着色器信息日志为空。