【发布时间】:2015-11-09 08:04:15
【问题描述】:
给定一个超基本的顶点着色器,例如:
output.position = mul(position, _gWorldViewProj);
我遇到了很多麻烦,因为我将 _gWorldViewProj 设置如下;我尝试了两者(有点甩尾)以确保它不只是倒退。
mWorldViewProj = world * view * proj;
mWorldViewProj = proj * view * world;
我的解决方案原来是:
mWorldView = mWorld * mView;
mWorldViewProj = XMMatrixTranspose(worldView * proj);
有人可以解释为什么需要这个 XMMatrixTranspose 吗?我知道 XNA 和 HLSL(我认为)之间存在矩阵差异,但原版 C++ 和 HLSL 之间没有,尽管我可能是错的。
问题是我不知道是我错了还是我错了什么!所以如果有人能准确地告诉我为什么需要转置,我希望不会再犯同样的错误。
【问题讨论】:
-
你能解释一下是什么症状让你相信你需要转置矩阵吗?
标签: matrix direct3d matrix-multiplication hlsl