Jengerer
Jengerer

Reputation: 1163

What's a good 2D graphics drawing API for Windows/C++?

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

Answers (4)

Jericho Kain
Jericho Kain

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

Ron Warholic
Ron Warholic

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

user257111
user257111

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

Franci Penov
Franci Penov

Reputation: 76021

If you don't need XP support, use Direct2D.
Otherwise, use GDI+.

Upvotes: 5

Related Questions