我正在将我们的应用程序从 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.ax
texture(sampler, uv)[0]texture(sampler, uv).r