Clarks: Yes, and I know it's not easy, but if you know what you're doing then you can forego a great deal of pain and actually enjoy it.
I know how to use DirectX 9 in C++, and trust me at first it doesn't look easy or even good, but once you get used to it you can work with it just fine. (I know this because I've done it with DX8 and 9- 8 was the same, pretty much, albeit it had a few differences in the Direct3D device interface.)
GL is easier in terms of use, but then if you want to do more advanced stuff you will likely have trouble adapting to it. (GLSL is a literal pain where setting constants is concerned, because you have to use glGet to get the address of the constant and that's slow as hell.)
I know how to use DirectX 9 in C++, and trust me at first it doesn't look easy or even good, but once you get used to it you can work with it just fine. (I know this because I've done it with DX8 and 9- 8 was the same, pretty much, albeit it had a few differences in the Direct3D device interface.)
GL is easier in terms of use, but then if you want to do more advanced stuff you will likely have trouble adapting to it. (GLSL is a literal pain where setting constants is concerned, because you have to use glGet to get the address of the constant and that's slow as hell.)