Как отменить проект в SlimDX - PullRequest
2 голосов
/ 07 апреля 2011

Я новичок в программировании игр, а также новичок в DirectX и SlimDX. В настоящее время я конвертирую код MDX в код SlimDX, и я застрял в проблеме, которую не могу найти в документации SlimDX. Я пытаюсь «отменить» векторный код, для которого выглядит следующее:

Код MDX:

Vector3 p1 = new Vector3(x, y, device.Viewport.MinZ);
p1.Unproject(device.Viewport, device.Transform.Projection, device.Transform.View, device.Transform.World);

Код SlimDX, который я преобразовал, выглядит следующим образом:

Vector3 p1 = new Vector3(x, y, device.Viewport.MinZ);
p1 = Vector3.Unproject(p1, device.Viewport.X, device.Viewport.Y, device.Viewport.Width,
device.Viewport.Height, device.Viewport.MinZ, device.Viewport.MaxZ, 
device.GetTransform(TransformState.World));

Используя приведенный выше код SlimDX, я не могу получить правильные результаты, пожалуйста, сообщите мне об этом, то есть, как я могу отменить проекцию вектора в SlimDX.

1 Ответ

0 голосов
/ 13 апреля 2011

Я не знаком с SlimDX, но в случае MDX вы передаете матрицы мира, вида и проекции в функцию Unproject (как вы должны), а во втором примере вы только пропускаете матрицу мира,Предполагая, что функция Vector3.Unproject принимает только одну матрицу в качестве аргумента, попробуйте вместо этого передать произведение World * View * Projection.

...