相关疑难解决方法(0)

在不同的VBO中存储不同的顶点属性

是否可以在不同的顶点缓冲区中存储不同的顶点属性?

到目前为止我见过的所有例子都是这样的

float data[] = 
{
//position
   v1x, v1y, v1z,
   v2x, v2y, v2z,
   ...
   vnx, vny, vnz,

//color
   c1r, c1g, c1b,
   c2r, c2g, c2b,
   ...
   cnr, cng, cnb,   
};
GLuint buffname;
glGenBuffers(1, &buffname);
glBindBuffer(GL_ARRAY_BUFFER, buffname);
glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
Run Code Online (Sandbox Code Playgroud)

并且绘图完成如下:

glBindBuffer(GL_ARRAY_BUFFER, buffname);
glEnableVertexAttrib(position_location);
glEnableVertexAttrib(color_location);
glVertexAttribPointer(position_location, 3, GL_FLOAT, GL_FALSE, 0, 0);
glVertexAttribPointer(color_location, 3, GL_FLOAT, GL_FALSE, 0, (void*)(3*n));

glDrawArrays(GL_TRIANGLES, 0, n/3);

glDisableVertexAttrib(position_location);
glDisableVertexAttrib(color_location);
glBindBuffer(GL_ARRAY_BUFFER, 0);
Run Code Online (Sandbox Code Playgroud)

是否有可能将位置数据和颜色数据存储在不同的VBO中?问题是我不明白这会如何解决,因为你不能同时绑定两个缓冲区,对吗?

如果有一个简单但效率低下的解决方案,我宁愿选择更复杂但更有效的解决方案,因为我处于初级学习状态,而且我不想太复杂化.

另外,如果我问的是可能的,这是一个好主意吗?

澄清:我确实理解如何在不同的VBO中存储不同的属性.我不明白我以后会如何画它们.

c++ opengl vbo

8
推荐指数
1
解决办法
2521
查看次数

标签 统计

c++ ×1

opengl ×1

vbo ×1