Что такое хороший API для рисования 2D-графики для Windows / C ++? - PullRequest
7 голосов
/ 01 сентября 2010

Я работал над небольшим небольшим приложением и использовал DirectX / 3D для рисования текстур на экране (все 2-мерные элементы). API, на мой взгляд, довольно прост в использовании и включает в себя использование принципов ООП, но я не могу не чувствовать, что использование DirectX для чего-то такого маленького просто безумно излишне убивает.

Хотя я не могу найти консенсуса по хорошей альтернативе. Есть предложения?

РЕДАКТИРОВАТЬ: Необходима поддержка альфа-смешения и файлов PNG.

С большой любовью к первому посту, Jengerer

Ответы [ 4 ]

5 голосов
/ 01 сентября 2010

Если вам нужно альфа-смешение, вы должны использовать графическое оборудование; единственный хороший способ сделать это - использовать 3D API, похожий на тот, что вы делаете сейчас (DirectX или OpenGL). Любая альтернатива (GDI / + или, скажем, DirectDraw) не будет использовать полное графическое оборудование для ускорения смешивания и должна будет выполнять его на ЦП, что значительно снижает производительность.

Как уже упоминалось, Direct2D также является опцией - это функциональный слой поверх Direct3D, который поддерживает более специфичные для 2D функции, а также превосходную поддержку текста.

5 голосов
/ 01 сентября 2010

Если вам не нужна поддержка XP, используйте Direct2D .
В противном случае используйте GDI + .

2 голосов
/ 01 сентября 2010

Windows включает один из коробки. (GDI32.DLL). Можно подключиться к сообщению WM_PAINT в вызове WindowProc и использовать BeginPaint(), чтобы начать рисование. Действительно хорошая идея о том, что можно сделать, и базовое руководство доступно на Zetcode .

1 голос
/ 02 сентября 2010

Я использовал Gosu в прошлом, и с ним было нормально работать.Он был разработан для более широкого использования с Ruby, но это не плохо для C ++.Мы использовали его в быстрой игре с боковой прокруткой, где мы перепутали z-порядок и альфа-канал.Возможно, стоит проверить.

...