2017-01-05 13 views
0

Я не уверен, должен ли я выполнять побитовые операции и деление внутри шейдера фрагментов OpenGL или перед запуском шейдера (вычислять на C++ и передавать как единое целое). То, что я на самом деле делаю, - это преобразование шестнадцатеричного int, представляющего значение RGB, в цвет, который можно использовать для рисования в OpenGL. Что обычно будет быстрее [в большинстве систем]?Быстрее ли делать побитовые внутри шейдера OpenGL или предварительно на C++?

+2

Является ли цвет атрибутом per-vertex, или вы проходите в текстуре? – Nonanon

ответ

3

Если это одно значение, рассчитанное для вызова ничьей, то сделайте это на C++.

Графические процессоры безумно быстрые, но нет смысла подсчитывать одинаковое значение для миллионов вершин или фрагментов.

Однако есть вопрос, как данные передаются. Если вы подозреваете, что есть разница, попробуйте оба подхода и прокомментируйте их.

+0

Как профиль GLSL? – Accumulator

+0

Я просто думал о частоте кадров, хотя это подход к санному молоту. – geofftnz

+1

@geofftnz: Помните, что компилятор GLSL также может выполнять оптимизацию. Если вы выполняете одну операцию много раз, она может быть переписана в другую операцию полностью в некоторых случаях. Кроме того, для очень дешевых инструкций шум в частоте кадров от других факторов, таких как система окон, может быть более значительным, чем влияние производительности на шейдер. – Bartvbl

 Смежные вопросы

  • Нет связанных вопросов^_^