我有一个带有透视投影的工作图形管道。我想在CPU上获得变换后的顶点,现在唯一的实现方法是使用DirectX::XMVector4Transform
将向量乘以我的变换矩阵。我希望当所有顶点都在屏幕内时,结果向量将在-1到1之间归一化。但是大多数向量大于1或小于-1。使用相同的变换矩阵,我可以变换gpu中的顶点,并且可以完美地工作。使用相同的矩阵,我希望向量在-1和1之间,只要顶点在屏幕上被渲染即可(即它们位于-1到1之间)。
我对XMVector4Transform()
函数表示怀疑。我不期望XMVector4Tranform
对顶点进行归一化,但是投影矩阵不应该吗?我正在使用DX函数生成透视投影矩阵。
projectedVectors[i].verts[j] = XMVector4Transform(XMVector4Transform(XMVector4Transform(v1, mWorld), *mView), *mProj);
当模型在屏幕内部时,我希望得到的向量将被归一化(即在-1和1之间)。而且我对矩阵很确定,我正在使用这些矩阵进行渲染,并且效果很好。顶点是正在渲染的3d模型,当3d模型位于屏幕区域内时,我正在观看这些值。