2015-04-14 2 views
1

Где я могу увидеть список команд opengl, таких как glBindXXX, отсортированных по стоимости исполнения.Изменяется стоимость состояния OpenGL (VB, IB, Texture)?

Например, этот список должен дать ответ на вопросы: Затраты: изменение текстуры или шейдера? Затраты: изменить шейдер или вертексбуфер? и т. Д.

ответ

3

Как @datenwolf писал, что это сильно зависит от реализации/аппаратных средств, но вот ссылку на презентацию с 2014 года, который имеет таблицу относительных расходов в порядке убывания (стр.48): http://www.slideshare.net/CassEveritt/beyond-porting

Render Target> Программа> ROP> Связывание текстур> Формат вершин> UBO> Связывание вершин> Равномерные обновления

+0

Спасибо. Это то, что мне нужно. –

2

Где я могу просмотреть список команд opengl, таких как glBindXXX, отсортированных по стоимости исполнения.

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

И затраты на государственные изменения полностью зависят от фактической реализации. Это, как говорится, есть несколько эмпирических правил:

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

Обратите внимание, что некоторые реализации OpenGL (особенно патентованные AMD и NVidia) даже позволяют собирать статистику и профили времени выполнения процесса, вызывающего их, для применения эвристики для оптимизации поведения во время выполнения.

+0

Возможно, официально такого списка не существует, но есть некоторые списки, которые пользователи делают экспериментом. Например, я видел такой список для direct3D. –

+0

Мы, очевидно, можем сказать, что переключатель shader имеет большую стоимость, чем состояние соединения переключателя. Я не хочу точного списка, я хочу примерный список. –

+0

@Vorotnyak_Nazar "shader switch имеет более высокую стоимость, чем состояние соединения переключателя" не обязательно, некоторые графические процессоры нуждаются в новом шейдере при переключении состояния смешивания (состояние смешивания скомпилировано в шейдер). –