Я не видел, как выглядит GlStateManager в майне, но имею опыт разработки оберток над OpenGL со схожим функционалом. В моём случае киллер-фичей была не экономия времени на смену параметров, когда они и так находятся в нужном состоянии, а возможность применить конкретный стейт вместо того, чтобы вспоминать, какие параметры находятся в каком состоянии на текущий момент, и дешевый push/pop стейта.
В майне с этим всегда была огромная проблема: "хм, а на этом моменте должен быть включен GL_BLEND? А GL_ALPHA_TEST? а GL_DEPTH_TEST? а если я выключу GL_LIGHTING, ничего не сломается?". Если же есть удобная обертка над стейт-машиной OpenGL, то всегда можно писать код уровня (хз как он выглядит в майне и можно ли там так делать):
someGlState = new GlStateBuilder().texture(myTexture).blend(true).build();
...
GlState.push(); // сохраняет текущий стейт по аналогии с матрицами
someGlState.apply(); // полностью заменяет текущий стейт на указанный выше
doRender();
GlState.pop(); // возвращает тот стейт, который был на момент входа в этот участок кода
Возможностей, похожих на этот apply OpenGL не предоставляет вообще. push/pop там есть, но они очень медленно работают и вообще deprecated. Выигрыш по скорости push/pop относительно OpenGL'ной реализации заключается в том, что в стейтмашине OpenGL сотни параметров, но редкой игре нужно больше нескольких десятков.