iOS 中的 Sampler3D
Sampler3D in iOS
我刚刚在我的 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;
}
现在,我想使用 sampler3D
,所以我有:
#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
)。对于所有其他人,必须将精度指定为默认精度或作为变量声明的一部分。
我刚刚在我的 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;
}
现在,我想使用 sampler3D
,所以我有:
#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
)。对于所有其他人,必须将精度指定为默认精度或作为变量声明的一部分。