void CanvasGL::renderLayer(size_t idx) { previousRenderedLayerIdx_ = idx; if (imageGL_) { const LayerGL* layerGL = imageGL_->getLayerGL(layerType_,idx); if (layerGL) { TextureUnit textureUnit; layerGL->bindTexture(textureUnit.getEnum()); renderTexture(textureUnit.getUnitNumber()); layerGL->unbindTexture(); return; } else { renderNoise(); } } if (!image_) renderNoise(); }
//-------------------------------------------------------------- void testApp::update(){ if (offset_incr > 0) { offset += offset_incr; dirty = true; } if (dirty) renderNoise(img); }
void CanvasGL::render(const Image* image, LayerType layerType, size_t idx) { image_ = image; layerType_ = layerType; pickingContainer_->setPickingSource(image_); if (image_) { imageGL_ = image_->getRepresentation<ImageGL>(); if (imageGL_ && imageGL_->getLayerGL(layerType_, idx)) { checkChannels(imageGL_->getLayerGL(layerType_, idx)->getDataFormat()->getComponents()); } else { checkChannels(image_->getDataFormat()->getComponents()); } renderLayer(idx); // Faster async download of textures sampled on interaction if (imageGL_->getDepthLayerGL()) imageGL_->getDepthLayerGL()->getTexture()->downloadToPBO(); if (pickingContainer_->pickingEnabled() && imageGL_->getPickingLayerGL()) imageGL_->getPickingLayerGL()->getTexture()->downloadToPBO(); } else { imageGL_ = nullptr; renderNoise(); } }