首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >池化PBO和纹理?

池化PBO和纹理?
EN

Stack Overflow用户
提问于 2012-02-07 04:19:31
回答 1查看 570关注 0票数 3

我有一个应用程序,它做了大量的GPGPU使用Opengl和像素缓冲区对象来传输和处理数据。

目前我使用了这些资源的池,基本上我为我的应用程序使用的每个缓冲区大小和使用情况都有一个池。当资源使用结束时,它将返回到其各自的池中以供重用。然而,我开始思考这里面是否有任何东西,因为我需要在重用之前将PBO“孤立”,以避免干扰正在进行的传输。

我的问题是,共享资源(如PBO和纹理)是否有任何优点,或者在需要时直接从OpenGL分配资源是否有好处?

下面是我正在做的一个例子。反之亦然。

代码语言:javascript
复制
std::shared_ptr<pbo> create_pbo(int size, bool write)
{
    auto pool = pbo_pools[write][size];
    std::shared_ptr<pbo> buffer;
    if(!pool->try_pop(buffer))  
        buffer = ogl_thread_.invoke([=]{return new pbo(size, write);}); 

    return spl::shared_ptr<pbo>(buffer.get(), [=](pbo*) mutable
    {
        ogl_thread_.begin_invoke([=]() mutable
        {       
            if(write)
                buffer->map();
            else // read
                buffer->unmap();

            pool->push(buffer);
        }); 
    });
}
EN

回答 1

Stack Overflow用户

发布于 2012-02-07 04:52:22

我开始思考这里面是否有任何东西,因为我需要在重用之前将PBO“孤立”,以避免干扰正在进行的传输。

不不用了。这就是PBO的好处:您可以向其中提交新数据,而对glTex(子)映像的调用可能仍在从中读取数据,而不会破坏读取操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9166680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档