Reputation: 1163
I've been working on a small little application, and I've been using DirectX/3D to draw textures to the screen (all 2-dimensional elements). The API, I find, is pretty easy to use and to incorporate using OOP principles, but I can't help but feel that using DirectX on something this small is insanely over-kill.
I can't seem to find consensus on a good alternative, though. Any suggestions?
EDIT: Native alpha-blending and PNG file support is necessary.
With much first-post love, Jengerer
Upvotes: 8
Views: 8980
Reputation: 13
I have used Gosu in the past, and it has been alright to work with. It was designed to be used more with Ruby, but it is not bad for C++. We used it in a quick side scroller game, where we messed with z-order and the alpha channel. It might be worth checking out.
Upvotes: 1
Reputation: 10074
If you need alpha blending you have to use the graphics hardware; the only good way to do that is to use a 3D API similar to how you're doing it now (DirectX or OpenGL). Any alternative (GDI/+ or say, DirectDraw) will not use the full graphics hardware for accelerating blending and will have to perform it on the CPU, greatly reducing performance.
As mentioned, Direct2D is an option also--it is functionally a layer on top of Direct3D that supports more 2D specific functionality as well as excellent text support.
Upvotes: 5
Reputation:
Windows includes one out of the box. (GDI32.DLL). It's possible to hook into the WM_PAINT
message in the WindowProc call and use BeginPaint()
to start drawing. A really good idea of what can be done and a basic tutorial is available on Zetcode.
Upvotes: 3
Reputation: 76021
If you don't need XP support, use Direct2D.
Otherwise, use GDI+.
Upvotes: 5