Beispiel #1
0
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();
}
Beispiel #2
0
//--------------------------------------------------------------
void testApp::update(){


    if (offset_incr > 0) {
        offset += offset_incr;
        dirty = true;
    }

    if (dirty)
        renderNoise(img);
}
Beispiel #3
0
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();
    }
}