2015-05-17 5 views
2

Я хочу сделать пару вершинных атрибутов vec4 в моих шейдерах. Я сделал довольно много поисковых запросов, но я не могу найти последовательную информацию специально для того, что я хочу делать.Пользовательские атрибуты вершин GLSL

Моя цель здесь - переместить скиннинг на графический процессор, поэтому мне нужен список костей и весов на вершину, поэтому я хочу использовать атрибуты вершин. У меня есть 2 массива поплавков, которые представляют эти данные. В основном это:

weightsBuffer = new float[vSize*4]; 
    indexesBuffer = new int[vSize*4]; 

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

Спасибо.

ответ

3

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

Точный код может отличаться в зависимости от того, используете ли вы VAO и VBOs (или только клиентские буферы). Если вам нужен более конкретный ответ, вы должны указать свой код и шейдер.

+0

Я хотел использовать списки отображения, но я прочитал спецификацию OpenGL, и glVertrxAttribPointer не работает с ними, поэтому вы правы. :) – BlueSpud