我希望使用opengl制作河内塔游戏。最终,我遇到了处理和将数据从一个缓冲区对象传输到另一个缓冲区对象的问题。我已经成功地将我的顶点存储在一个缓冲区对象中,并将它与一个顶点数组绑定。现在想将它移动到另一个创建的缓冲区对象,该对象绑定到另一个顶点数组。问题是当我尝试使用 glGetBufferSubData 获取我的顶点时,我的数据数组显示它的所有元素都为零(我将它打印在控制台上)。我仔细检查了天气,我的缓冲区对象的数据正确,看起来是这样。请帮助我,我在这里的绳索尽头。
我的代码:
struct Stack
{
unsigned int top;
VA vao;
};
void transfer(Stack& s1, Stack& s2)
{
float data[20];//collects data
s1.vao.Bind();
glGetBufferSubData(GL_ARRAY_BUFFER, 0, 20* sizeof(float), data);`
for (int i = 0; i < 20; i+=5)//prints data collected
{
cout << i+1 << "th loop" << endl;
for (int j = i; j < i + 5; j++)
{
cout << data[j]<<"\t";
}
cout << endl;
}
s2.vao.Bind();
glBufferSubData(GL_ARRAY_BUFFER, 0, 20 * sizeof(float), data);
}