I like OpenGL, but I really hate the global state. If only there was some concept of state objects that record state, something like:
glBeginState(&stateObj); glEnable(GL_BLEND); glDepthTest(GL_LEQUAL); glEndState(&stateObj);
and then later on you'd do glBindState(&stateObj) to apply it.
I have high hopes for WebGPU though and I am going to migrate my renderer to it soon.