【发布时间】:2026-01-27 06:45:02
【问题描述】:
我想绘制 2 个顶点缓冲区,但它只绘制第二个。我正在使用 OpenGL 4.6 和 COMPAT 配置文件。代码:
float buffer[] =
{
0.0f,0.0f,
1.0f,0.0f,
1.0f,1.0f
};
float buffera[] =
{
0.0f,0.0f,
1.0f,0.0f,
1.0f,-1.0f
};
unsigned int id;
glGenBuffers(1, &id);
glBindBuffer(GL_ARRAY_BUFFER, id);
glBufferData(GL_ARRAY_BUFFER, 6 * sizeof(float), buffer, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (const void*)8);
glBindBuffer(GL_ARRAY_BUFFER, 0);
unsigned int ida;
glGenBuffers(1, &ida);
glBindBuffer(GL_ARRAY_BUFFER, ida);
glBufferData(GL_ARRAY_BUFFER, 6 * sizeof(float), buffera, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (const void*)8);
glBindBuffer(GL_ARRAY_BUFFER, 0);
unsigned int indices[]
{
0,1,2
};
然后绘制调用:
glBindBuffer(GL_ARRAY_BUFFER, id);
glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, indices);
glBindBuffer(GL_ARRAY_BUFFER, ida);
glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, indices);
【问题讨论】: