函数texture()采用什么参数?

时间:2014-04-28 20:49:51

标签: opengl opengl-es glsl

float texture(gsampler2DArrayShadow sampler, vec4 P, [float bias]);

在OpenGL ES(shader lang)中查看此功能。我不明白gsampler2DArrayShadowsampler2DArrayShadow之间的区别。你能解释一下吗?我读过那个' g'可以意味着什么,或我或你。但是这种类型呢?

此外,是否[浮动偏见]'意味着我们有2个函数:使用此参数而不使用?

1 个答案:

答案 0 :(得分:2)

任何时候你在函数原型中看到前缀为g的GLSL中的变量类型,这是一种速记约定,意味着每种类型的数据都存在重载。例如,接受gvec的函数意味着它有ivecuvecvecdvecbvec的重载等等上。

桌面GLSL除了固定/浮点外还支持整数采样器,因此您将看到使用gsampler...而不是sampler...定义的许多函数,这意味着函数具有{{1除了更传统的变种之外,还有isampler...重载。


至于usampler...,用于控制mipmap LOD偏差。如果不为该参数提供值,则GL会计算偏差本身。

有趣的是,由于mipmap LOD的计算方式,只有纹理查找的片段着色器多种支持自动mipmap选择(它与每片段衍生计算有关)。要在顶点着色器中使用mipmapping,您必须使用[float bias]明确选择LOD,或使用textureLod (...)提供您自己的偏导数。