WedX - журнал о программировании и компьютерных науках

Отрисовка текстуры onGUI потребляет много кадров в секунду

У меня стандартные 60 кадров в секунду на моем iphone 4 при рендеринге сцены. Затем я рисую 2 текстуры в onGUI следующим образом:

void OnGUI() 
    {
    GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),textureBack);
        GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),textureFront);
        }

а фпс падает до ~30фпс. Переднее изображение должно иметь альфа-канал, поэтому я установил его для переопределения на RGBA 32 бит, это изображение, по-видимому, теперь имеет размер 3 МБ, заднее изображение - 1,5 МБ, оба имеют разрешение 1024x768.

Есть ли способ лучше справиться с этой проблемой? Я хочу, чтобы изображения снимались со скоростью не более 10 кадров в секунду, потому что 30 кадров в секунду - это абсурд!

05.11.2012

  • Падение с 60 кадров в секунду до 30 кадров в секунду, вероятно, связано с вертикальной синхронизацией. Ваша исходная сцена занимает ‹ 1/60 для рендеринга (и, таким образом, позволяет 60 кадров в секунду), но если дополнительные затраты на рендеринг увеличивают это значение до чуть более 1/60, например, 1/59 секунды, следующая более низкая интегральная частота кадров не подходит. 59 кадров в секунду, но 30 кадров в секунду. В любом случае, вы, вероятно, ограничены в скорости заполнения. Если ваша основная текстура пользовательского интерфейса в основном прозрачна, вам, вероятно, лучше использовать больше геометрии, то есть разбить ее на более мелкие фигуры/прямоугольники и исключить те прямоугольники, которые являются «пустыми». 05.11.2012
  • @SimonF спасибо за ответ! Вот что я сделал, я разбил исходное изображение на множество других изображений меньшего размера. Мне нужно реализовать ластик, поэтому на моем изображении не должно быть много пустых мест. Есть ли способ улучшить производительность? кто-то рекомендовал мне переключиться на GUITextures, потому что GUI.DrawTexture работает медленно. 05.11.2012

Ответы:


1

Вы можете использовать GameObject с текстурой, связанной с основной камерой. Таким образом, он будет следовать за камерой, как это делают текстуры при использовании OnGUI.

12.11.2012

2

Встроенный графический интерфейс в единстве работает плохо (нет пакетной обработки вызовов отрисовки), вы можете переключиться на GUITextures или любые другие графические интерфейсы...

еще одна вещь, если вы используете встроенный графический интерфейс без GUILayout, отключите его, чтобы получить дополнительные кадры. Просто установите для useGUILayout значение false в вашей функции start()

13.11.2012
Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


Для любых предложений по сайту: [email protected]