передать std :: vector & lt; glm :: mat4 & gt; к вершинному шейдеру как атрибут массива вершин [duplicate]

размер шрифта: 0; может быть немного сложнее управлять ...

Я думаю, что следующие пары строк намного лучше и более пригодны для повторного использования, а также для экономии времени, чем любые другие методы. Я лично использую это:

.inline-block-wrapper>.inline-block-wrapper,
.inline-block-wrapper{letter-spacing: -4px;}
.inline-block-wrapper>*{letter-spacing: 0;display: inline-block;}

/* OR better shorter name...*/
.items>.items,
.items{letter-spacing: -4px;}
.items>*{letter-spacing: 0;display: inline-block;}

Тогда вы можете использовать его как следующий ...

  • Item 1
  • Item 2
  • Item 3

Насколько я знаю (я могу ошибаться), но все браузеры поддерживаем этот метод.

ОБЪЯСНЕНИЕ:

Это работает (возможно, может быть, возможно, -3px) в точности так, как вы ожидали, что он будет работать.

  • скопируйте и вставьте код (один раз)
  • , затем на вашем html просто используйте class="items" в родительском блоке каждого встроенного блока.

У вас не будет необходимости вернуться к css и добавить еще одно правило css для ваших новых встроенных блоков.

Решение сразу двух проблем.

Также обратите внимание на > (больше знака) это означает, что * / все дети должны быть встроенными блоками.

http://jsfiddle.net/fD5u3/

ПРИМЕЧАНИЕ. Я изменил приспосабливаться к наследованию разметки букв, когда оболочка имеет дочернюю оболочку.

5
задан Bram 28 June 2013 в 00:44
поделиться

1 ответ

В соответствии с этой страницей и моей текущей реализацией аппаратных средств в моей игре правильный способ заключается в том, что атрибут mat4 занимает 4 места атрибутов. Тот, который вы связываете, и следующие три.

int pos = glGetAttribLocation(shader_instancedarrays.program, "transformmatrix");
int pos1 = pos + 0; 
int pos2 = pos + 1; 
int pos3 = pos + 2; 
int pos4 = pos + 3; 
glEnableVertexAttribArray(pos1);
glEnableVertexAttribArray(pos2);
glEnableVertexAttribArray(pos3);
glEnableVertexAttribArray(pos4);
glBindBuffer(GL_ARRAY_BUFFER, VBO_containing_matrices);
glVertexAttribPointer(pos1, 4, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 4 * 4, (void*)(0));
glVertexAttribPointer(pos2, 4, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 4 * 4, (void*)(sizeof(float) * 4));
glVertexAttribPointer(pos3, 4, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 4 * 4, (void*)(sizeof(float) * 8));
glVertexAttribPointer(pos4, 4, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 4 * 4, (void*)(sizeof(float) * 12));
glVertexAttribDivisor(pos1, 1);
glVertexAttribDivisor(pos2, 1);
glVertexAttribDivisor(pos3, 1);
glVertexAttribDivisor(pos4, 1);
8
ответ дан Robert Rouhani 25 August 2018 в 18:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: