3d иконки на верхнем представлении с прямым x 9 в c ++ - PullRequest
1 голос
/ 07 марта 2011

Я делаю визуальный симулятор, где у меня много 2D-иконок, представляющих элементы симуляции, и у меня есть значок 3D (.x с Blender), который представляет другой и более важный элемент.Мне нужно сделать это поверх других 2d иконок (.tga), но я не могу найти способ сделать это.Возможно ли, чтобы Direct x нарисовал значок 3d поверх остальных значков 2D?В этот момент 2D-иконки появляются поверх 3D, всегда.

Может, кто-нибудь поможет мне с этим.Я программирую на C ++ Заранее большое спасибо.

Ответы [ 2 ]

0 голосов
/ 07 марта 2011

Предполагая, что у вас включена буферизация глубины, вы должны убедиться, что значение Z ваших значков находится дальше от вашей камеры, чем от вашей модели.Если вы используете ID3DXSprite, вы сможете указать положение Z при вызове функции Draw или с помощью функции ID3DXSprite :: SetTransform () .

Обратите внимание, что ID3DXSprite может рисовать ваши спрайты с помощью матрицы проекции, отличной от вашей модели, в зависимости от флагов, которые вы передаете ID3DXSprite :: Begin ().Возможно, вы захотите использовать флаг D3DXSPRITE_OBJECTSPACE .

0 голосов
/ 07 марта 2011

Отключение Z-записи при рендеринге 2D-иконок.Когда вы затем визуализируете 3D-иконки с включенной Z-записью, они будут отображать НАД 2D-значками.

В настоящее время ваша проблема заключается в том, что, когда вы визуализируете 2D-иконки, вы делаете это со значением z, которое находится передZ-буфер (наиболее вероятно 0).Вы также можете обнаружить, что вы можете установить значение z на 1 (опять же, вероятно, это полностью зависит от того, как вы настроили 2D-рендеринг), чтобы заставить 2d-иконки отображаться в задней части буфера z.

Нет записи в Z-буфере, эквивалентной тому, что она находится сзади Z-порядка.

...