我正在将应用程序从Windows移植到Linux,我需要了解操作员[]在HLSL中的工作以及如何移植到GLSL。
我有这样的代码:
red = texture.Sample(sampler, uv)[x];
Sample函数应该返回一个像素值,对吧? x是一种偏移量吗?
答案 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。
x
与texture(sampler, uv)[0]
相同。另请参见GLSL- Swizzling。