从语言角度来看,MSL 中的
sampler
对象是什么?
sampler s(coord::pixel, address::clamp_to_zero, filter::linear);
我对 C++ 的了解不够好,无法解析这里发生的事情。如果我理解正确的话
sampler
是一种结构类型。但我只使用 C 结构,上面的语法对我来说完全陌生。这是 C++ 中某种众所周知的模式吗?一些较新的 C++ 功能?怎么称呼?
我只知道纯 C 结构初始化语法,如下所示:
MY_TYPE a = { .stuff = 0.456, .flag = true, .value = 123 };
sampler s(coord::pixel, address::clamp_to_zero, filter::linear);
sampler
是一种类型,表明您正在声明一个采样器对象。
coord::pixel
这可能是指采样纹理时使用的坐标模式。它可能表明像素坐标(整数坐标)正在用于采样。
address::clamp_to_zero
这是指采样器的寻址模式。 “钳位到零”可能是一种通过将纹理坐标设置为零来处理超出有效范围的纹理坐标的方法。
filter::linear
这指定了采样纹理时使用的过滤方法。 “线性”过滤通常涉及混合相邻纹理像素以计算采样值。
不是标准 C++ 的一部分。它特定于 HLSL 和 MSL 等图形,用于定义采样器对象。此语法在一般 C++ 中并不是众所周知的模式,也不是较新的 C++ 功能。它是为特定编程领域(即图形和着色器开发)设计的构造。