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

问题描述 投票:1回答:1

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

我有这样的代码:

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

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

glsl hlsl hlsl2glsl
1个回答
0
投票

[]运算符是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.a),因此x的值必须为0 ,1、2或3。texture(sampler, uv)[0]texture(sampler, uv).r相同。另请参阅GLSL- Swizzling

© www.soinside.com 2019 - 2024. All rights reserved.