glVertexAttribPointer向量2,但仅向前一个

glVertexAttribPointer vec2 but forward just one

本文关键字:一个 向量 glVertexAttribPointer      更新时间:2023-10-16

我有这个,它将在vec2中读取,是否可以只向前一个,这样顶点着色器将在每个0,1、1,2、2,3中接收,依此类推?

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

这感觉像是一个破解,但您可以明确地将glVertexAttribPointerstride参数设置为单个float的大小。

基本上,每当GL获取索引为i的顶点时,它都将使用地址offset + i * stride。您当前用作步幅参数的0是一个方便快捷方式,意味着一个紧凑的数组,因此在您的情况下,它将等效于2 * sizeof(GLfloat),但GL中没有任何内容可以阻止您将步幅设置为低于紧凑数组的值:

glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(GLfloat), 0);