Сетки DirectX не отображаются должным образом после переключения вида и матрицы проекции - PullRequest
1 голос
/ 21 июня 2010

В моей программе сетки отображались правильно, но когда я меняю матрицы device.transform.view и device.transform.projection с левой на правую систему, сетки больше не отображаются должным образом,т.е. задние грани освещаются, а передние грани прозрачны!Кто-нибудь есть идеи, что еще нужно изменить, чтобы иметь правильный дисплей

Оригинальные матрицы:

device.Transform.View = Matrix.LookAtLH(vFrom, vAt, vUp);
device.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 4, fAspect, 0f, 100f);

модификация:

device.Transform.View = Matrix.LookAtRH(vFrom, vAt, vUp);
device.Transform.Projection = Matrix.PerspectiveFovRH((float)Math.PI / 4, fAspect, 0f, 100f);

1 Ответ

1 голос
/ 21 июня 2010

Что ж, я ожидаю, что обе эти матрицы ужасно выйдут из строя на основании того, что вы установили ближнюю плоскость на 0. Это действительно должен быть какой-то маленький эпсилон, например, 0,0001f.

Еще одна вещь, которую нужно иметь в виду, заключается в том, что, переключая систему, вы, скорее всего, инвертируете порядок наматывания трис.

Вам нужно установить состояние рендеринга отбраковки по часовой стрелке, а не против / против часовой стрелки.

е

dxDevice.SetRenderState( RenderState.CullMode, Cull.Clockwise );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...