opengl 我可以用这种方式创建PBO吗?

nqwrtyyt  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(171)

要在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吗?

qrjkbowd

qrjkbowd1#

根本就没有“PBO”这种东西;至少,不是你所认为的那样。2只有缓冲对象,作为像素传输的源/目的地只是它们的一种用法。3缓冲对象与它的任何特定用法都没有直接的联系。
你可以用一个缓冲对象来传输像素,然后用同一个缓冲对象来传输顶点数据,再用同一个缓冲对象来传输其他数据。或者你可以用一个缓冲对象的不同部分来做不同的事情。OpenGL并不在乎。任何缓冲对象都可以在任何时候做任何事情(在某些合理的限制下)。
使用DSA API创建的缓冲区可以像任何其他缓冲区对象一样用于像素传输。

相关问题