| 1516 | } |
| 1517 | |
| 1518 | ImagePtr |
| 1519 | EffectInstance::convertOpenGLTextureToCachedRAMImage(const ImagePtr& image) |
| 1520 | { |
| 1521 | assert(image->getStorageMode() == eStorageModeGLTex); |
| 1522 | |
| 1523 | boost::shared_ptr<ImageParams> params( new ImageParams( *image->getParams() ) ); |
| 1524 | CacheEntryStorageInfo& info = params->getStorageInfo(); |
| 1525 | info.mode = eStorageModeRAM; |
| 1526 | |
| 1527 | ImagePtr ramImage; |
| 1528 | getOrCreateFromCacheInternal(image->getKey(), params, true /*useCache*/, &ramImage); |
| 1529 | if (!ramImage) { |
| 1530 | return ramImage; |
| 1531 | } |
| 1532 | |
| 1533 | OSGLContextPtr context = getThreadLocalOpenGLContext(); |
| 1534 | assert(context); |
| 1535 | if (!context) { |
| 1536 | throw std::runtime_error("No OpenGL context attached"); |
| 1537 | } |
| 1538 | |
| 1539 | ramImage->pasteFrom(*image, image->getBounds(), false, context); |
| 1540 | ramImage->markForRendered(image->getBounds()); |
| 1541 | |
| 1542 | return ramImage; |
| 1543 | } |
| 1544 | |
| 1545 | ImagePtr |
| 1546 | EffectInstance::convertRAMImageToOpenGLTexture(const ImagePtr& image) |
nothing calls this directly
no test coverage detected