要在OpenGL中创建缓冲区,我们需要编写以下代码:
GLuint buffer;
glCreateBuffers(1,&buffer);
glNamedBufferStorage(buffer,size,data,flags);我知道我们可以这样创建PBO:
GLuint pbo;
glCreateBuffers(1,&pbo);
glBindBuffer(GL_PIXEL_UNPACK_BUFFER,&pbo);
glBufferData(...);//initializing buffer我的问题是,我能否以第一种方式创建pbo?
发布于 2022-11-17 18:30:27
没有“PBO”这样的东西,至少你看上去不是这样的。只有缓冲区对象,而作为像素传输的源/目标仅仅是one of them。缓冲区对象绝不直接与它的任何特定用途相关联。
您可以使用缓冲区对象进行像素传输,然后将相同的对象用于顶点数据,然后使用相同的对象进行其他操作。也可以将缓冲区对象的不同部分用于不同的用途。OpenGL不在乎。任何缓冲区都可以用于缓冲区可以在任何时候使用的任何东西(在某些合理的限制范围内)。
您用DSA创建的缓冲区可以像任何其他缓冲区对象一样用于像素传输。
https://stackoverflow.com/questions/74480297
复制相似问题