2010-07-27 70 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