У меня есть рабочий графический конвейер с перспективной проекцией.я хотел получить преобразованные вершины в ЦП, теперь единственный способ добиться этого - это умножить вектор на мои матрицы преобразования, используя DirectX::XMVector4Transform
.Я ожидал, что результирующие векторы будут нормализованы между -1 и 1, в то время как все вершины находятся внутри экрана.Но большинство векторов больше 1 или меньше -1.Используя те же матрицы преобразования, я преобразовываю вершины в графическом процессоре, и это прекрасно работает.Используя те же матрицы, я ожидаю, что векторы будут между -1 и 1, пока вершины отображаются на экране (т.е. они лежат между -1 до 1).
Я скептически отношусь к XMVector4Transform()
функция.Я не ожидаю, что XMVector4Tranform
нормализует верты, но разве матрица проекции не должна этого делать?Я генерирую матрицу перспективной проекции с помощью функции DX.
projectedVectors[i].verts[j] = XMVector4Transform(XMVector4Transform(XMVector4Transform(v1, mWorld), *mView), *mProj);
Я ожидаю, что результирующие векторы будут нормализованы (то есть между -1 и 1), когда модели находятся внутри экрана.и я уверен в матрицах, я использую их для рендеринга, и это прекрасно работает.вершины отрисовываются 3d-модели, и я наблюдаю значения, когда 3d-модель находится внутри области экрана.