1

我正在将我们的应用程序从 Windows 移植到 Linux,我需要了解 operator [] 在 HLSL 中做了什么以及如何移植到 GLSL。

我有这样的代码:

red = texture.Sample(sampler, uv)[x];

示例函数应该返回一个像素值,对吧?x 是一种偏移吗?

4

1 回答 1

1

[]-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

于 2020-02-10T18:46:37.963 回答