Новая перспектива + матрица преобразования каждое обновление? - PullRequest
0 голосов
/ 01 марта 2012

Я просматривал шаблон для OpenGL ES 2.0 в Xcode и заметил, что Apple создает новую матрицу перспективы и новую матрицу преобразования перед каждым кадром.Я также вижу это в уроках.Когда я использую OpenGL на других платформах, мне нужно создать Матрицы только один раз.Почему Apple хочет, чтобы вы делали новый каждый кадр?

1 Ответ

0 голосов
/ 02 марта 2012

В сложном приложении есть несколько способов справиться с состоянием OpenGL:

1) Наличие политики, в которой каждая функция или метод, изменяющий состояние OpenGL, должны установить его обратно в прежнее состояние, прежде чем они что-либо сделали

2) Каждая функция или метод устанавливает состояние так, как они хотят, чтобы оно ничего не предполагало о существующем состоянии

3) Вы отслеживаете состояние, а функции и методы могут проверять его локально и устанавливать только то, что им нужно

В случае 1, если кто-то забывает следовать политике, возникают ошибки, и их трудно отследить. Кроме того, получение текущего состояния может быть дорогостоящим для определенных битов состояния.

В случае 2 вы тратите время на установку состояния, которое вам может не понадобиться. Это обычно не так уж и плохо.

В случае 3 вы тратите много усилий и памяти, отслеживая состояние, которое уже поддерживает OpenGL. Это дорого и подвержено ошибкам.

Так что обычно я иду с # 2. Для меня это наименьший объем работы, и в большинстве случаев он демонстрирует достаточно хорошую производительность. Ваш пробег может отличаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...