О переключателе текстуры в OpenGLES - PullRequest
2 голосов
/ 09 июля 2010

При переключении текстуры, почему скорость медленная?


Код - 1

glBindTexture (GL_TEXTURE_2D, texId01);

glDrawArray (glDrawArrays (glDrawArrays (GL_TRIANGLES, 0, 4);

glBindTexture (GL_TEXTURE_2D, texId02);

glDrawArray (glDrawArrays (GL_TRIANGLES, 0, 4);


код - 2

glBindTexture (GL_TEXTURE_2D, texId01);

glDrawArray (GL_TRIANGLES, 0, 4);

glDrawArray (GL_TRIANGLES, 0, 4);


1023* Почему эти скорости разные?

Ответы [ 3 ]

7 голосов
/ 22 февраля 2011

Неправильный ответ неверен для OpenGLES на оборудовании PowerVR, оборудовании и, возможно, других.Я уже несколько раз сталкивался с этим мифом о «связывании текстур медленно», но ни один из документов по производительности (Apple или Imagination Technologies) ничего об этом не упоминал.

Так что я проверил это непосредственно с Imagination Technologies, иИх ответ:

Использование glBindTexture не должно иметь никакого значения для производительности, кроме того, что мы упомянули в нашей документации, есть небольшие накладные расходы, но не огромные.Некоторая информация, по-видимому, упоминает переключение текстур при использовании glTexture2D для перезагрузки текстур, что является медленным вызовом и должно выполняться только при первой инициализации приложения

3 голосов
/ 09 июля 2010

Поскольку драйвер должен выполнить некоторые внутренние проверки, чтобы убедиться, что все в порядке, поэтому привязка текстуры является дорогостоящей операцией.

Учитывая это, вы должны минимизировать операции привязки текстуры.Обычный способ сделать это - сортировать примитивы по текстуре (и также шейдеру, если GL ES 2.0) при рисовании.

1 голос
/ 03 августа 2012

Шива, бхай сун .. Я знаю, что у вас есть какая-то игра в глесе

почему вы должны задавать такие вопросы, ... сможете ли вы оптимизировать все равно, если это действительно медленно, например медленноиз-за драйвера и т. д.?

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

...