【发布时间】:2023-05-21 21:19:01
【问题描述】:
我对使用 Direct3D 和 HLSL 有点陌生,我想知道以下问题:如何在一个着色器函数中访问矩阵的成员。在我看来,它应该是点运算符和之后的一些东西,就像向量一样。但是,我不确定如果我要使用它,我会在点之后放下什么。访问第 2 行第 3 列的成员会是类似 .m12 的东西吗?
【问题讨论】:
我对使用 Direct3D 和 HLSL 有点陌生,我想知道以下问题:如何在一个着色器函数中访问矩阵的成员。在我看来,它应该是点运算符和之后的一些东西,就像向量一样。但是,我不确定如果我要使用它,我会在点之后放下什么。访问第 2 行第 3 列的成员会是类似 .m12 的东西吗?
【问题讨论】:
假设你的矩阵是
float4x4 myTransform;
您可以访问基于 1 的成员(例如 m11 到 m44),例如:
float member = myTransform._11;
float member = myTransform._44;
或从零开始:
float member = myTransform._m00;
float member = myTransform._m33;
【讨论】:
添加到 catflier 的答案。您还可以像在 C++ 中期望的那样使用数组下标语法(从零开始)来获取矩阵成员。
float4x4 myMatrix;
float x = myMatrix[0][1];
【讨论】: