Относительная стоимость различных функций OpenGL? - PullRequest
3 голосов
/ 11 июля 2011

Я пытаюсь оптимизировать некоторый код OpenGL, и мне было интересно, знает ли кто-нибудь таблицу, которая дает приблизительное приближение относительной стоимости различных функций OpenGL? Что-то вроде (эти цифры, вероятно, совершенно неверны):

method                        cost
glDrawElements(100 indices)    1
glBindTexture(512x512)         2
glGenBuffers(1 buffer)         1.2

Если этого не существует, можно ли его собрать или различные аппаратные средства / ОС слишком различны, чтобы это имело смысл?

Ответы [ 2 ]

4 голосов
/ 11 июля 2011

Там, конечно, нет такого списка. Одной из проблем при создании такого списка является ответ на вопрос: «Какая стоимость?»

Все функции рендеринга имеют стоимость времени работы графического процессора. То есть GPU должен делать рендеринг. Сколько затрат зависит от используемых шейдеров, количества предоставленных вершин и используемых текстур.

Даже для затрат времени процессора значения не ясны. Возьми glDrawElements. Если вы изменили привязки атрибутов вершины перед вызовом, тогда это может занять больше процессорного времени, чем если бы вы этого не делали. Точно так же, если вы изменили унифицированные значения в программе с момента ее последнего использования, то рендеринг с этой программой может занять больше времени. И пр.

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

4 голосов
/ 11 июля 2011

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

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