+ AsyncTaskManager::Get().AddTask(mRasterizingTask);
+ }
+ }
+}
+
+void CanvasView::ApplyRasterizedImage(CanvasRendererRasterizingTaskPtr task)
+{
+ if(task->IsRasterized())
+ {
+ Texture rasterizedTexture = task->GetRasterizedTexture();
+ if(rasterizedTexture && rasterizedTexture.GetWidth() != 0 && rasterizedTexture.GetHeight() != 0)
+ {
+ if(!mTextureSet)
+ {
+ std::string fragmentShader = SHADER_CANVAS_VIEW_FRAG.data();
+ DevelTexture::ApplyNativeFragmentShader(rasterizedTexture, fragmentShader);
+
+ mTextureSet = TextureSet::New();
+ Geometry geometry = VisualFactoryCache::CreateQuadGeometry();
+ Shader shader = Shader::New(SHADER_CANVAS_VIEW_VERT, fragmentShader, Shader::Hint::NONE, "CANVAS_VIEW");
+ Renderer renderer = Renderer::New(geometry, shader);
+
+ renderer.SetTextures(mTextureSet);
+ renderer.SetProperty(Renderer::Property::BLEND_PRE_MULTIPLIED_ALPHA, true);
+ Self().AddRenderer(renderer);
+ }
+ mTextureSet.SetTexture(0, rasterizedTexture);