方括号运算符在HLSL中做什么

时间:2020-02-10 18:40:49

标签: shader hlsl hlsl2glsl

我正在将应用程序从Windows移植到Linux,我需要了解操作员[]在HLSL中的工作以及如何移植到GLSL。

我有这样的代码:

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

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

1 个答案:

答案 0 :(得分:1)

[]-运算符是array member selection operator,也可以用于访问向量。

等效于glsl的代码

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

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

texture返回类型为vec4的值(例如sampler2D)。向量的组成部分可以由索引运算符访问。由于x是索引,因此它必须是具有整数数据类型的变量或常量。向量具有4个分量(.x.y.z.w分别为.r.g.b,{{ 1}}),因此.a的值必须为0、1、2或3。
xtexture(sampler, uv)[0]相同。另请参见GLSL- Swizzling