Source code for arcade.future.texture_render_target

from arcade import get_window
from arcade.color import TRANSPARENT_BLACK
from arcade.gl import geometry
from arcade.gl.texture import Texture2D
from arcade.types import RGBA255


[docs] class RenderTargetTexture: """ An alternative render target to the default window/screen. This can be used in creative ways. Args: width: Width of the render target in pixels height: Height of the render target in pixels """ def __init__(self, width: int, height: int): self.window = get_window() if not self.window: raise RuntimeError("No window found") self.width = width self.height = height self._background_color: RGBA255 = TRANSPARENT_BLACK self.ctx = self.window.ctx self._fbo = self.ctx.framebuffer( color_attachments=[self.ctx.texture((width, height), components=4)] ) self._quad_fs = geometry.quad_2d_fs() @property def texture(self) -> Texture2D: """The internal OpenGL texture""" return self._fbo.color_attachments[0]
[docs] def clear(self): """Clear the texture with the configured background color""" self._fbo.clear(color=self._background_color)
[docs] def set_background_color(self, color: RGBA255): """Set the background color for the light layer""" self._background_color = color
[docs] def resize(self, width: int, height: int): """Resize the the internal texture""" pixel_scale = self.window.get_pixel_ratio() self._size = width * pixel_scale, height * pixel_scale self._fbo = self.ctx.framebuffer( color_attachments=self.ctx.texture((width, height), components=4) )