glVertexAttribPointer vec2, но вперед только один

У меня есть это, что будет читать в vec2, можно ли переслать только один, так что вершинный шейдер будет получать в каждом 0,1, затем 1,2 2,3 и так далее?

float v[]{0,1,2,3,4...};
glVertexAttribPointer((GLuint)0, 2, GL_FLOAT, GL_FALSE, 0, 0);

1 ответ

Решение

Это похоже на взлом, но вы могли бы явно установить stride параметр glVertexAttribPointer до размера одного float,

По сути, всякий раз, когда GL выбирает вершину с индексом i, он будет использовать адрес offset + i * stride, 0 вы используете в качестве параметра шага в качестве удобного ярлыка, означающего плотно упакованный массив, поэтому он будет эквивалентен 2 * sizeof(GLfloat) в вашем случае, но в GL нет ничего, что мешало бы вам установить шаг ниже этого значения плотно упакованного массива:

glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(GLfloat), 0);
Другие вопросы по тегам