(Кроме того, OpenGL ES 2 не имеет средства управления преобразованиями, поэтому в некоторых случаях у вас нет выбора.)
Более подробно, я нашел управление матрицами через встроенные в OpenGL стеки матриц.порой быть настоящей болью, вынуждая меня толкать и вставлять довольно обильно в более сложные части моего кода рендеринга, даже иногда переупорядочивать рендеринг просто для упрощения управления стеками.Я также написал C ++ pusher-popper class, который использует RAII для автоматического управления всем этим, но требует тщательной проверки локальных переменных.
Когда я переключился на ES 2, я был встревожен, узнав, что вся эта функциональность былаушел.Однако я обнаружил, что переключение на мои собственные матрицы фактически упростило мой код, потому что я мог работать с несколькими преобразованиями, используя комбинацию локальных переменных и переменных-членов (со значимыми именами), не теряясь в пространстве, а стек преобразования был заменен главным образом с помощьюстек вызовов, т. е. текущее преобразование - это просто локальная матричная переменная, которая передается в качестве родительского параметра преобразования в следующую функцию вниз, но с возможностью сделать это по-другому в другое время.