Joh*_*ing 5 c++ opengl graphics
当我使用glGenBuffers创建一个带有指针的VBO时,我(想)正在分配内存.对glGenBuffers的后续调用应返回不同的指针,但先前分配的内存又如何呢?在Nehe示例中,我没有看到"空闲内存"调用...而且我读到openGL是一种"状态机",这是否意味着如果我的initializeBuffers()函数被多次调用我不会需要释放任何东西,只需使用glGenBuffers"就是这样"?
Kil*_*nDS 13
对于glGenBuffers您的任何通话,您必须进行相应的glDeleteBuffers通话.
请注意,您传递给的指针glGenBuffers未分配/取消分配.事实上,甚至可能这些调用实际上并没有在cpu内存中分配任何东西,但你也无法保证.
你传递的glGenBuffers是一个已经分配的数组(或单个值),它将存储你引用gpu-resource的"名称",工作流程如下所示:
GLuint buffer; //Note: statically allocated
glGenBuffers(1, &buffer); // Allocate a GPU-resource - only updates value in buffer
//Work a bit with buffer
glDeleteBuffers(1, &buffer); //Deallocate the gpu-resource
Run Code Online (Sandbox Code Playgroud)
原因buffer是作为指针传递,因为您可以创建多个缓冲区,例如:
GLuint buffer[3]; //Note: again statically allocated
glGenBuffers(3, &buffer); // Allocate a GPU-resource - update values in buffer
//Work a bit with buffer
glDeleteBuffers(3, &buffer); //Deallocate the gpu-resource
Run Code Online (Sandbox Code Playgroud)
当然,buffer很可能是你动态分配的,例如:
std::vector<GLuint> buffer(3); //std::vector uses dynamic allocation
glGenBuffers(3, &buffer[0]); // Allocate a GPU-resource - update values in buffer
//Work a bit with buffer
glDeleteBuffers(3, &buffer[0]); //Deallocate the gpu-resource
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3284 次 |
| 最近记录: |