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);