iOS中的Sampler3D
我刚刚在我的iOS应用程序中加入了OpenGL ES 3.0,它运行良好 我在下面有一个工作着色器: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
#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,着色器信息日志为空。