Я видел, что D3DX9 не рекомендуется Microsoft и не поставляется с Windows SDK. Я хотел бы принять.
Мне не хватает утилиты для рисования линий.
Как заменить ID3DXLine и ID3DXFont в «новом» DirectX9?
Я видел, что D3DX9 не рекомендуется Microsoft и не поставляется с Windows SDK. Я хотел бы принять.
Мне не хватает утилиты для рисования линий.
Как заменить ID3DXLine и ID3DXFont в «новом» DirectX9?
Как правило, линии и шрифты — это спрайты. ID3DXLine
и ID3DXFont
используют интерфейс ID3DXSprite
под капотом. (Конечно, есть и другие варианты, но спрайтовый подход используется чаще всего)
Итак, во-первых, вам понадобится либо сторонний, либо ваш собственный рендерер спрайтов. Как правило, разработка спрайтового движка состоит из этапов:
Вы можете выбрать, на каком этапе вы остановитесь. Позже вы можете вернуться и продолжить.
Тогда для прямых линий вы просто нарисуете тонкий прямоугольный спрайт. Пользователь будет вводить значения, такие как начало, конец и толщина линии, и вам нужно будет выполнить простую математику, чтобы вычислить положение и поворот этого спрайта. Спрайт может быть просто цветным или иметь текстуру: для пунктирных линий, полосатых линий, линий с розовыми пушистыми котятами и т.д. Затем вы можете реализовать изогнутые линии как набор прямых линий. При желании вы можете добавить спрайты к концам строки, например, стрелки.
Для текста все может быть очень сложно (и здесь я расскажу только о спрайтовых шрифтах):
Чтобы получить символы из файла шрифта, такого как .ttf
, в растровое изображение (изображение), вы можете использовать библиотеку. FreeType — лучший из известных мне программ с открытым исходным кодом. Самостоятельный разбор шрифтов может быть... сложным.
Затем вы можете смешать все вместе и нарисовать линии с текстурой текста. Или нарисуйте текст, окруженный рамкой из линий. Или спрайт с текстом над ним. Или графический интерфейс. Все эти вещи будут спрайтами.
Если вы все еще используете DirectX 9, вам действительно нужно возиться с Windows SDK, удаляя вещи D3DX? Может быть, вы можете продолжить разработку с помощью Direct SDK и D3DX, если это вам подходит? Обратите внимание: если по какой-то причине вы решите перейти на DX11, есть DirectXTK, которые частично заменяет материал D3DX11. Тем не менее, ваше собственное или стороннее решение, вероятно, будет более гибким и подходящим для вас. Есть много других применений спрайтов в 3D-графике, таких как рекламные щиты, графический интерфейс, частицы и т. Д. И, как всегда, изобретать велосипед — это очень весело и позитивно;)
Надеюсь, поможет. Удачного кодирования!
Почему бы не попробовать использовать DirectX 11?
В остальном OpenGL поддерживается практически на любой платформе.
Я бы порекомендовал попробовать SDL, у него есть вспомогательные методы для большинства 2D-материалов, которые вы можете себе представить.