void World::CreateNamedRT(String worldName) { Graphics* g = context->GetSubsystem<Graphics>(); int w = g->GetWidth(); int h = g->GetHeight(); renderTexture = SharedPtr<Texture2D>(new Texture2D(context)); if (renderTexture) { renderTexture->SetSize(w, h, Graphics::GetRGBFormat(), TEXTURE_RENDERTARGET); renderTexture->SetFilterMode(FILTER_NEAREST); renderTexture->SetName(worldName); ResourceCache* cache = context->GetSubsystem<ResourceCache>(); cache->AddManualResource(renderTexture); RenderSurface* surface = renderTexture->GetRenderSurface(); surface->SetUpdateMode(RenderSurfaceUpdateMode::SURFACE_UPDATEALWAYS); surface->SetViewport(0, camera.vp); } }
void UISceneView::SetAutoUpdate(bool enable) { if (enable != autoUpdate_) { autoUpdate_ = enable; RenderSurface* surface = renderTexture_->GetRenderSurface(); if (surface) surface->SetUpdateMode(autoUpdate_ ? SURFACE_UPDATEALWAYS : SURFACE_MANUALUPDATE); } }
void UISceneView::OnResize(const IntVector2 &newSize) { if (newSize.x_ == size_.x_ && newSize.y_ == size_.y_) return; int width = newSize.x_; int height = newSize.y_; if (width > 0 && height > 0) { viewport_->SetRect(IntRect(0, 0, width, height)); renderTexture_->SetSize(width, height, rttFormat_, TEXTURE_RENDERTARGET); depthTexture_->SetSize(width, height, Graphics::GetDepthStencilFormat(), TEXTURE_DEPTHSTENCIL); RenderSurface* surface = renderTexture_->GetRenderSurface(); surface->SetViewport(0, viewport_); surface->SetUpdateMode(autoUpdate_ ? SURFACE_UPDATEALWAYS : SURFACE_MANUALUPDATE); surface->SetLinkedDepthStencil(depthTexture_->GetRenderSurface()); size_ = newSize; } }