Pregunta

He estado trabajando en una pequeña aplicación pequeña, y he estado usando DirectX/3D para dibujar texturas a la pantalla (todos los elementos bidimensionales). La API, encuentro, es bastante fácil de usar e incorporando el uso de principios OOP, pero no puedo evitar sentir que usar DirectX en algo que tan pequeño es increíblemente mata.

Sin embargo, parece que no puedo encontrar un consenso sobre una buena alternativa. ¿Alguna sugerencia?

EDITAR: Es necesario mezclar alfa y soporte de archivo PNG.

Con mucho amor en primer poste, Jengerer

¿Fue útil?

Solución

Si necesita mezcla alfa, debe usar el hardware de gráficos; La única buena manera de hacerlo es usar una API 3D similar a cómo lo está haciendo ahora (DirectX o OpenGL). Cualquier alternativa (GDI/+ o Say, DirectDraw) no utilizará el hardware de gráficos completo para acelerar la mezcla y tendrá que realizarla en la CPU, reduciendo en gran medida el rendimiento.

Como se mencionó, Direct2D también es una opción: es funcionalmente una capa sobre Direct3D que admite más funcionalidad específica 2D, así como un excelente soporte de texto.

Otros consejos

Si no necesita soporte de XP, use Directo2d.
De lo contrario, use GDI+.

Windows incluye uno fuera de la caja. (GDI32.dll). Es posible conectarse a la WM_PAINT Mensaje en la llamada y uso de WindowProc. BeginPaint() para comenzar a dibujar. Una muy buena idea de lo que se puede hacer y un tutorial básico está disponible en Cárter.

he utilizado Gosu En el pasado, y ha sido bien trabajar con él. Fue diseñado para usarse más con Ruby, pero no está mal para C ++. Lo usamos en un juego de desplazamiento lateral rápido, donde nos metimos con Z-Order y el canal Alpha. Puede que valga la pena echarle un vistazo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top