2010-07-27 66 views
0

我不认为我是第一个考虑这个问题的人......但是有可能编写一个在OpenGL中管理VRAM /缓冲区对象(BO)的STL分配器吗?使用stl向量来管理opengl缓冲区对象

由于这个Question我目前使用矢量来写入和BO从BOs读取。

此外我使用一些模板来映射BO几乎任何我喜欢的东西。像这样:

TypedBufferObject<someKindOfStruct> tbo = getTBO(); 
someKindOfStruct* mapPtr = tbo.map(GL_READ_WRITE); 

这工作得很好......但对于地图包含的元素数量来说并不安全。

有人为STL实现了基于BO的分配器吗?而且(如果没有)会实际上有可能吗?

回答

1

This article作者:Matt Austern是创建自己的分配器的经典参考。分配者有他们的角落和缝隙,但是当你知道他们写自己的时候并不那么困难。

+0

经过阅读,我可以说,它可以通过映射到主内存来从BO分配内存。 但是这并不能帮助使用BO,因此每次写入或读取之后都必须将其取消映射,这无法直接在分配器中完成。 – fho 2010-07-27 11:15:19

+1

@Florian:正如我在我的评论中提到的有关此问题的其他问题的答案中所述,最好创建一个尽可能像STL容器一样的轻量级类(模板)。它会在构建时通过一个BO,映射它,允许使用它,并且将它放到它的析构函数中。 – sbi 2010-07-27 16:15:52

+0

其实我正在使用'TypedBufferObject'来达到这个目的...我只是希望能够使用更加标准化的方式。 – fho 2010-07-29 07:35:51