Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 1st, 2012  |  syntax: None  |  size: 0.56 KB  |  hits: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Pooling PBOs and textures?
  2. std::shared_ptr<pbo> create_pbo(int size, bool write)
  3. {
  4.     auto pool = pbo_pools[write][size];
  5.     std::shared_ptr<pbo> buffer;
  6.     if(!pool->try_pop(buffer))  
  7.         buffer = ogl_thread_.invoke([=]{return new pbo(size, write);});
  8.  
  9.     return spl::shared_ptr<pbo>(buffer.get(), [=](pbo*) mutable
  10.     {
  11.         ogl_thread_.begin_invoke([=]() mutable
  12.         {      
  13.             if(write)
  14.                 buffer->map();
  15.             else // read
  16.                 buffer->unmap();
  17.  
  18.             pool->push(buffer);
  19.         });
  20.     });
  21. }