Member 14131869 Ответов: 0

Как преобразовать вершины с матрицами на процессоре?


I have a working graphics pipeline with perspective projection. i wanted to get the transformed vertices on the CPU, now the only way to achieve that was to multiply the vector with my transformation matrices using DirectX::XMVector4Transform. I expected the resulting vectors to be normalized between -1 to 1 while all the vertices are inside screen. But most of the vectors are more than 1 or less than -1. using the same transformation matrices i transform the verts in the gpu and it works perfectly. using the same matrices i expect the vectors to be between -1 and 1 as long as the veerts are being renderd in on the screen (i.e they between -1 to 1).

Что я уже пробовал:

я скептически отношусь к функции XMVector4Transform()

lang="c++">
projectedVectors[i].verts[j] = XMVector4Transform(XMVector4Transform(XMVector4Transform(v1, mWorld), *mView), *mProj);

0x01AA

Я не вижу причин для этого XMVector4Transform следует нормализовать результат. Но в любом случае вы можете нормализовать результат XMVector4Transform около XMVector4Normalize.

Member 14131869

На самом деле я не ожидаю, что XMVector4Tranform нормализует вершины, но разве матрица проекции не должна этого делать?? я генерирую матрицу перспективной проекции с помощью функции DX. или я чего-то не понимаю?

0 Ответов