Я смотрел шаблон для OpenGL ES 2.0 в Xcode, и я заметил, что Apple создает новую перспективную матрицу и новую матрицу преобразования перед каждым фреймом. Я также вижу это в учебниках. Когда я использую OpenGL на других платформах, мне нужно только создать Matrices один раз. Почему Apple хочет, чтобы вы создали новый кадр?New Perspective + Transform Matrix каждое обновление?
ответ
В комплексном применении, есть несколько способов справиться с OpenGL состояния:
1) имеют политику, где каждая функция или метод, который изменяет OpenGL состояния должны установить его обратно к тому, что это было до того, что они сделали что-нибудь
2) Каждая функция или метод устанавливает состояние на то, что они хотят, чтобы быть предполагая ничего о существующем состоянии
3) отслеживать состояние и функции и методы могут проверить его на месте и установить только то, что они нуждаются в
В случае 1, если кто-то забывает следовать политике, возникают ошибки и их трудно отследить. Кроме того, получение текущего состояния может быть дорогостоящим для определенных бит состояния.
В случае 2 вы проводите время, которое вам может не понадобиться. Это, как правило, не так уж плохо.
В случае 3 вы тратите много усилий и памяти на отслеживание состояния, которое OpenGL уже поддерживает. Это дорого и подвержено ошибкам.
Как обычно, я иду с № 2. Это наименьшее количество работы для меня и в большинстве случаев имеет хорошую производительность. Ваш пробег может отличаться.
- 1. transform 3x3 Matrix OpenCV Matrix
- 2. Image Perspective Transform с помощью Android OpenCV
- 3. Invert CSS3 Transform Matrix
- 4. Qt Transform matrix
- 5. OpenCV Perspective Transform дает неожиданный результат
- 6. Как понять CSS3 3D Transform Perspective
- 7. Matrix Factorization New User
- 8. Почему Transform Matrix не работает в OpenGL
- 9. Flash 8 против CSS3 Matrix Transform (аффинный)
- 10. Css Matrix vs Transform. Что быстрее?
- 11. 4x4 transform matrix - как найти центр вращения?
- 12. Переписывает ли R transform() каждое значение?
- 13. Javascript new Случайный номер на каждое нажатие
- 14. Оптимизация Matrix Обновление и Умножение
- 15. svg transform matrix изменяет ход элемента. Как предотвратить это?
- 16. Perspective ошибка
- 17. Обновление кэша: обновить каждое обновление db?
- 18. OpenGL ES Matrix/Vector-Transform отличается от desktiop OpenGL
- 19. Google maps добавляет новый маркер каждое обновление
- 20. Perspective Crop с CSS3
- 21. Java Perspective в Eclipse,
- 22. JavaScript Background Perspective Library
- 23. Относительный путь Perspective
- 24. Silverlight - Perspective 3D
- 25. CSS3 Второго 3D Perspective
- 26. HTML5 Perspective Сетка
- 27. Каждое другое обновление составных компонентов JSF
- 28. разница браузеров с Transform
- 29. CSS3 Transform Perspective Не работает в FF или IE - Эффект Swing
- 30. Laravel 5.1 - Сессия регенерирует каждое обновление
Вы имеете в виду сбросить его перед рендерингом каждой модели для # 2? Если да, то как насчет предыдущих преобразований? –
Все зависит от того, что вы пытаетесь сделать. В приложениях, над которыми я работал, часто используется множество способов, которыми мы используем OpenGL для рендеринга. Таким образом, мы можем отобразить модель, а затем нарисовать некоторые элементы управления на экране. Обычно нам нужны разные преобразования для экранных элементов управления, чем модели. Но вы можете сбросить такие вещи, как 'glColor *()' или 'glLineWidth()' для каждой модели. Это зависит только от конкретной ситуации. – user1118321