【问题标题】:Can I create PBO in this way?我可以用这种方式创建 PBO 吗?
【发布时间】:2022-11-18 02:30:27
【问题描述】:

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

【问题讨论】:

    标签: opengl pbo


    【解决方案1】:

    没有“PBO”这样的东西;至少,不是你认为的那样。只有缓冲区对象,作为像素传输的源/目标仅仅是one usage of them。缓冲区对象决不直接与它的任何特定用途相关联。

    您可以将缓冲区对象用于像素传输,然后将同一缓冲区对象用于顶点数据,然后将同一缓冲区对象用于其他内容。或者您可以将缓冲区对象的不同部分用于不同的用途。 OpenGL 不关心。任何缓冲区都可以用于缓冲区可以在任何时候使用的任何东西(在某些合理的限制内)。

    您使用 DSA API 创建的缓冲区可以像任何其他缓冲区对象一样用于像素传输。

    【讨论】:

    • 所以,答案是肯定的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 2014-08-02
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多