gpt4 book ai didi

opengl - OpenGL 中的动态 VBO

转载 作者:行者123 更新时间:2023-12-04 03:07:09 25 4
gpt4 key购买 nike

存储用于 VBO(或顶点数组)的动态数据的最佳方法是什么。我看到的唯一例子是 2D 静态数组,指向该数组的指针与下一个参数一起使用,作为步长,用于一个元素的字节等。我可以使用“动态”数组,这样我就可以在广播中指定它的大小,但只有一次。我的观点是,例如,如果您已经绘制了 1000 个点(谈论 2D,所以我认为点比顶点更好)作为线条并添加新点,这样您必须创建大小为 1001 的新数组,复制从旧字段到新字段的所有内容,添加新点并将其发送到图形的内存中。最好的方法是使用向量或双端队列作为临时存储,但随后我必须转换为数组并再次将其发送下来。

那么有没有更好的方法来做到这一点?我可以只向 VBO 添加新部件而不发送旧数据吗?或者更好的方法来存储数据/使用矢量作为数据源而不需要转换?

最佳答案

我通常只使用 'ole vector 技巧:

struct GL_Vertex
{
Eigen::Vector2f tex;
Eigen::Vector3f color;
Eigen::Vector3f pos;
};
...
vector<GL_Vertex> buf(1000);
...
glTexCoordPointer( 2, GL_FLOAT, sizeof(GL_Vertex), &buf[0].tex );
glColorPointer( 3, GL_FLOAT, sizeof(GL_Vertex), &buf[0].color );
glVertexPointer( 3, GL_FLOAT, sizeof(GL_Vertex), &buf[0].pos );

关于opengl - OpenGL 中的动态 VBO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3267095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com