2015-10-31 5 views
0

Итак, у меня есть игра, над которой я работаю на C++ с DirectX 9. Это 3D, но я хочу иметь 2D-оверлей. Я слышал, что могу использовать D3DXMatrixOrthoLH, но я очень смущен тем, как его использовать. Я больше знаком с OpenGL, где я мог просто переключаться между 3D и 2D, инициируя представление. Пример того, как это сделать с DirectX 9, будет отличным!Как использовать рендеринг 2D-наложения с DirectX 9

Большое спасибо!

ответ

1

Вы можете использовать класс ID3DXSprite в библиотеке D3DX9 для рисования 2D-текстур для HUD.

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

Почему вы используете устаревший DirectX 9, который старше десятилетия? Если вы использовали Direct3D 11, вы можете использовать DirectX Tool Kit и класс SpriteBatch, чтобы нарисовать ваш HUD. DirectX SDK устарел, библиотека D3DX устарела, D3DXMath устарела, а отладка для DirectX 9 не поддерживается в Windows 8 или новее. См. MSDN

+0

Я не могу использовать Direct3D 11, потому что я использую MinGW с CLion, и я не могу заставить его работать правильно. – oliveryas01

0

Спасибо за помощь всем. Я решил поцарапать DirectX и вернуться к добрым старым OpenGL, с которыми я больше знаком.