Хранение данных на объект для фрагментного шейдера - PullRequest
1 голос
/ 05 сентября 2011

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

У каждого объекта очень мало вершин, но они полностью статичны.

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011

В более поздних версиях OpenGL http://www.opengl.org/wiki/Uniform_Buffer_Object

действительно есть объекты Uniform Buffer.
1 голос
/ 05 сентября 2011

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

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

...