Hot take: OpenGL is lacking when trying to understand how things work. OpenGL hides a lot of state from the API because it has a lot of cruft from when Graphics cards were ASICs. DirectX 11 and especially 12 and Vulkan are closer to the actual hardware capabilities of the GPU and state is more explicitly passed between stages rather than having a state machine hiding somewhere in the driver