问题描述
由于要使用大量的VBO,我想避免多次重复以下代码:
glBindBuffer(GL_ARRAY_BUFFER,VBOs[0]);
glBufferData(GL_ARRAY_BUFFER,sizeof(vertices1),vertices1,GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER,VBOs[1]);
glBufferData(GL_ARRAY_BUFFER,sizeof(vertices2),vertices2,VBOs[2]);
glBufferData(GL_ARRAY_BUFFER,sizeof(vertices3),vertices3,VBOs[3]);
glBufferData(GL_ARRAY_BUFFER,sizeof(vertices4),vertices4,GL_STATIC_DRAW);
我试图用一个循环来简化这段代码。这是我尝试做的事情:
std::string aux = "vertices";
std::string aux2;
int aux3;
std::string aux4;
const void* aux5;
for (int i = 0; i <= 13; i++) {
aux3 = i++;
aux4 = std::to_string(aux3);
aux2 = aux + aux4;
aux5 = aux2.c_str();
glBindBuffer(GL_ARRAY_BUFFER,VBOs[i]);
glBufferData(GL_ARRAY_BUFFER,sizeof(aux2),aux5,GL_STATIC_DRAW);
}
没有成功。它仍然显示了我使用过的最后一种颜色的图形,但没有绘制其他图形。有没有办法使该循环有效,还是应该继续重复上面的代码?感谢您的帮助。
我还尝试用一个循环来简化代码中的VAOs部分,并且有效。这是我的操作方式:
glGenVertexArrays(14,VAOs);
for (int i = 0; i <= 13; i++) {
glBindVertexArray(VAOs[i]);
glBindBuffer(GL_ARRAY_BUFFER,VBOs[i]);
glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,3 * sizeof(float),(void*)0);
glEnableVertexAttribArray(0);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)