In my experience the difference lies in how much power each API gives to you (initially, right off the bat). In OpenGL, if you want to specify a vertex, hit glBegin(), glVertex3f(), etc. and OpenGL will take care of the batching and sending it off to the video processor by itself, with nothing else from you (I say again, this is RIGHT OFF THE BAT, there ARE more complicated ways of doing things). However, Direct3D makes you create a Vertex Buffer, which explicity states how many vertices are in it, what their format is, etc etc. This lets YOU decide how you want to send if off to the card. Now, personally, I find OpenGL''s ''buffers'' to be a bit hard to use, because OpenGL wasn''t originally designed to incorporate them (most are extensions) and for compatability issues its been forced to kind of ''mix-and-match''. Unfortunately, the same can be said about Direct3D''s lack of dxVertex3f() and the like, though it hasn''t tried to incorporate it AT ALL. This is where most people tend to think OpenGL''s completely easier than Direct3D; not true, just in the beginning
Just my 2 cents. Oh yeah, I''m a DirectX person (if you''ve not gotten that yet) and you can find DirectX tutorials scattered throughout the web (mostly flipcode, gamasutra, and the gamedev.net articles section). Unfortunately, most of these are ACTUALLY for Direct3D, which is now obsolete. Instead, learn from these tutorials, then search online for DirectX Graphics, which is the newer API from 8.1 (8.0?) onwards.
Chris Pergrossi
My Realm | "Good Morning, Dave"