I have never understood and will never understand why so many programming luminaries fell in love with OpenGL. It violates the most important engineering precept that I try to follow when I design a library: minimize hidden state. OpenGL is nothing but hidden state. You have no way to tell what a piece of code is going to render without seeing everything that set up the internal stack beforehand, perhaps thousands of lines away, or in entirely different modules that you might not even have access to.

I won’t defend the state soup, but there are upsides: the GL api has no structs which makes it easier to port the API to different languages and environments.

The state model isn’t nearly as much of an issue for the fixed function architectures it was originally developed for, you can see how adherence to the extension mechanism and the resulting design by committee left its marks. Microsoft didn’t have those constraints.

At least partly, it’s a form of choice-supportive bias (https://en.wikipedia.org/wiki/Choice-supportive_bias).

Your mind cannot live with the idea that you spent many, many hours learning an ugly API, so it makes you think it is better than it is.

Sounds like C++ and OpenGL are BFFs.

The quip is that C++ is fool's gold; Flying around in code and getting all the little mechanical details right really feels like getting things done. (It's just wizard- or mastery-flavored busywork. Glitter.)

I've later come to suspect that this glittering is sometimes useful as… fuel? Feeling-of-progress hands-on motivation-fuel.