I'd suggest the OP go a more middle route. I suggest doing 2D graphics with a 3D api. There are lots of tutorials out there showing how to render 2D sprites and such in opengl and direct3d. Despite what another poster said, setting up the projection matrix for 2D rendering isn't THAT hard (glOrtho). And this'll give enough of an intro to the api that moving over to 3D will be less painfull.
If you stick to c++, I recommend opengl and sdl, and following nehe's tutorials. OpenGL and SDL give a much more gentle introduction: it takes much less code to get a window created and to render some triangles. And direct3d's c++ api is very daunting to a new programmer.
If you decide to try c#, I recommend managed directx or xna. Both are much simpler and cleaner than their c++ counterpart.
[off topic]
Quote:Original post by SimonForsman
How much did microsoft pay you to say that ?
virtually every single game for the PS3 and MacOSX Platforms use OpenGL or OpenGL:ES while DX is only fully supported by Windows Vista. (Not even the 360 has full DX support).
Other than those simple facts OpenGL has the exact same features as D3D10 (Except with OpenGL you can access those features on WindowsXP, MacOSX, GNU/Linux and any other system that has appropriate drivers for the hardware).
Thus claiming that DX is "The real thing" is pure ERASED - I know you're a valuable guy, but try to restrain your vocabulary when you discuss with younger guy/girls.
I'm not a microsoft fanboy, but most of what you say here is totally false. I don't mean to drive the thread off topic, but I hate to see flagrant misinformation go uncorrected.
First of all, DirectX isn't only supported on vista. It works for XP and a number of other versions. Yes OpenGL works on non-windows platforms, but those make up a much smaller portion of the market (not counting consoles of course). I'm not going to argue that one is better than the other, but the fact is that there are vastly more direct3d games out there than opengl ones.
The xbox 360 does support Direct3D, except that it lacks the fixed function pipeline. You just have to use shaders for everything. And modern games do that anyways.
At the moment opengl does not have all the features of direct3d 10. There are similarities, for example direct3D 10 no longer does kernel mode switching, something it has in common with opengl. But does opengl support geometry shaders or a unified pipeline? Nope, not yet. I'm sure it will though.
Let's not spread false information just because you don't like Microsoft, which I suspect is the case with you, judging from your first sentence.
[/off topic]