iOS中的Sampler3D

时间:2015-05-04 17:55:15

标签: 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(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中。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

s = ' aaa ' #3 spaces in start and after `aa` there are two spaces s[/\A */].size # for blank spaces in start of string => 3 s[/ *\z/].size # for blank spaces a the end of string => 2 类似,float没有默认精度。在片段着色器的开头添加它,您还可以在其中指定默认的sampler3D精度:

float

当然,如果能给你足够的精确度,你可以使用precision mediump sampler3D;

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