Прибираємо непотрібні зміни станів – РОЗРОБКА ІГОР ДЛЯ ОС ANDROID

Розглянемо метод presents BobTesta, щоб дізнатися, де що можна урізати Ось фрагмент коду (я додав FPSCounter, а також glRotatef і glScalef):

Перше, що ми можемо зробити, – перемістити виклики gl Viewport і gl CI earColor, а також виклики методів, які встановлюють проекційну матрицю в метод BobScreen resume Колір очищення ніколи не буде змінюватися, так само як область перегляду і матриця проекції Ви запитаєте, чому не помістити код для установки всіх постійних станів OpenGL, таких як область перегляду або матриця проекції, в конструктор BobScreen Справа у втраті контексту Всі зміни станів OpenGL ES будуть загублені, а коли викликається наш екранний метод resume, ми знаємо, що контекст, як і всі загублені стану, був відновлений Ми також можемо перемістити в метод resume виклик gl EnableC і виклик привязки текстури Нарешті, ми хочемо, щоб текстурирование було включено весь час, проте ми використовуємо тільки одну текстуру для Боба На всякий випадок ми переміщаємо texture, reload в метод resumeO, щоб у разі втрати контексту наші дані зображення текстури були заново завантажені Ось як виглядатимуть змінені методи present і resume:

Застосування цієї поліпшеної версії призводить до наступних результатів на трьох пристроях:

Як бачите, всі пристрої трохи виграли від наших оптимізацій Звичайно, ефект не так вже великий через те, що ми спочатку викликаємо всі ці методи на початку фрейму, а адже ми ще не приступили до трикутниками

Джерело: Mario Zechner / Маріо Цехнер, «Програмування ігор під Android», пров Єгор Сидорович, Євген зазноби, Видавництво «Пітер»

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*