Преобразование вершин в ЦП не приводит к нормализации координат - PullRequest
0 голосов
/ 04 июля 2019

У меня есть рабочий графический конвейер с перспективной проекцией.я хотел получить преобразованные вершины в ЦП, теперь единственный способ добиться этого - это умножить вектор на мои матрицы преобразования, используя 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-модель находится внутри области экрана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...