O que é uma boa API de desenho de gráficos 2D para Windows/C ++?
Pergunta
Eu tenho trabalhado em um pequeno aplicativo e usei o DirectX/3D para desenhar texturas para a tela (todos os elementos bidimensionais). A API, acho, é muito fácil de usar e incorporar o uso de princípios de OOP, mas não posso deixar de sentir que usar o DirectX em algo tão pequeno é incrivelmente matante.
Não consigo encontrar consenso em uma boa alternativa, no entanto. Alguma sugestão?
EDITAR: É necessário um suporte nativo de mistura alfa e PNG.
Com muito amor de primeiro post, Jengerer
Solução
Se você precisar de uma mistura alfa, precisará usar o hardware gráfico; A única boa maneira de fazer isso é usar uma API 3D semelhante a como você está fazendo agora (DirectX ou OpenGL). Qualquer alternativa (GDI/+ ou Say, DirectDraw) não usará o hardware gráfico completo para acelerar a mistura e terá que executá -lo na CPU, reduzindo bastante o desempenho.
Como mencionado, o Direct2D também é uma opção-é funcionalmente uma camada em cima do Direct3D que suporta mais funcionalidade específica 2D e excelente suporte de texto.
Outras dicas
O Windows inclui um fora da caixa. (Gdi32.dll). É possível prender no WM_PAINT
mensagem na chamada do windowproc e uso BeginPaint()
para começar a desenhar. Uma boa ideia do que pode ser feito e um tutorial básico está disponível em ZetCode.
Eu tenho usado GOSU No passado, e estava tudo bem para trabalhar. Foi projetado para ser usado mais com o Ruby, mas não é ruim para C ++. Nós o usamos em um jogo de rolante lateral rápido, onde mexemos com a ordem Z e o canal alfa. Pode valer a pena conferir.