Я используюmatrix = * ((fxMatrix *) & d3dMatrix); //Зло?
matrix = *((fxMatrix*)&d3dMatrix);
довольно долгое время. Он работал нормально, пока мой экран не стал черным и получил на моем столе ведро разочарования.
fxMatrix содержит 4 fxVectors. fxVector раньше был 16 байтами, но теперь это было неожиданно 20. Это было потому, что он унаследовал fxStreamable, который добавил vTable.
Так что одно решение, конечно, просто не наследовать fxStreamable и оставить комментарий, говорящий, что он всегда должен быть 16 байт и не больше.
Другим решением было бы сделать функции преобразования и полностью скопировать матрицу. Это делает его более безопасным, но оказывает влияние на производительность. Полагаю, это лучшая идея.
Другое решение - не конвертировать вообще и придерживаться D3DXMATRIX, но это делает двигатель непоследовательным, и мне лично очень не нравится эта идея.
Что вы думаете?
Вы должны делать то, что является самым чистым, а не самым быстрым; они все равно не являются взаимоисключающими. – GManNickG