我正在将我们的应用程序从 Windows 移植到 Linux,我需要了解 operator [] 在 HLSL 中做了什么以及如何移植到 GLSL。
我有这样的代码:
red = texture.Sample(sampler, uv)[x];
示例函数应该返回一个像素值,对吧?x 是一种偏移吗?
[]-operator 是数组成员选择运算符,也可用于访问向量。
等效的 glsl 代码
red = texture.Sample(sampler, uv)[x];
是
float red = texture(sampler, uv)[x];
texture
返回一个类型的值vec4
(例如 for sampler2D
)。向量的组件可以通过索引操作符访问。由于x
是索引,它必须是具有整数数据类型的变量或常量。该向量有 4 个分量(.x
、.y
、.z
、、、、),因此 的值.w
必须为 0、1、2 或 3。与 相同。另请参阅GLSL-Swizzling。.r
.g
.b
.a
x
texture(sampler, uv)[0]
texture(sampler, uv).r