使用opengl 3.3,radeon 3870HD,c++ ..
我有关于交错数据数组的问题。我在向量中获得了我的应用程序结构,它作为数据发送到缓冲区对象。像这样的东西:
struct data{
int a;
int b;
int c;
};
std::vector<data> datVec;
...
glBufferData(GL_ARRAY_BUFFER, sizeof(data)*datVec.size(), &datVec[0], GL_DYNAMIC_DRAW);
没关系,我经常使用这个东西。但我创建的是交错数组,因此数据如下:
a1,b1,c1,a2,b2,c2,a3,b3,c3
现在我将这个东西发送到 GPU 中进行处理,并通过转换反馈读回缓冲区,例如 b 变量。所以它看起来像:
bU1, bU2, bU3
我想将更新的值复制到交错缓冲区中,这可以通过 glCopyBufferSubData 之类的单个命令来完成吗?这个不合适,因为它只需要偏移量和大小而不是步幅(可能类似于 c++ 中的 memcpy)......结果应该如下所示:
a1, bU1, c1, a2, bU2, c2, a3, bU3, c3
如果没有,有没有比这两个我的更好的方法?
映射更新的缓冲区,将值复制到应用程序中的临时存储中,取消映射更新,映射数据缓冲区并通过它迭代设置新值
常量缓冲区和变量缓冲区上的单独缓冲区。常数会随着时间的推移保持不变,但使用 glCopyBufferSubData 变量可以在一次调用中更新..
谢谢