From 182154244b0318a7ed67ffdea1e8e38b1b83bca5 Mon Sep 17 00:00:00 2001 From: Kayla <108439098+ms-kaylaa@users.noreply.github.com> Date: Tue, 1 Apr 2025 19:42:14 -0400 Subject: [PATCH] fix shader output alpha & set_target_surface --- pygame_shaders/pygame_shaders.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pygame_shaders/pygame_shaders.py b/pygame_shaders/pygame_shaders.py index 5a926a2..9957281 100644 --- a/pygame_shaders/pygame_shaders.py +++ b/pygame_shaders/pygame_shaders.py @@ -101,7 +101,10 @@ def set_target_surface(self, surface: pygame.Surface) -> None: # self.screen_texture.texture.release() self.target_surface = surface - # self.screen_texture = texture.Texture(pygame.Surface(self.target_surface.get_size()), self.ctx) + self.render_rect = screen_rect.ScreenRect(self.target_surface.get_size(),self.target_surface.get_size(), (0, 0), self.ctx, self.shader) + + self.screen_texture = texture.Texture(pygame.Surface(self.target_surface.get_size()), self.ctx) + self.framebuffer = self.ctx.simple_framebuffer(size=self.target_surface.get_size(), components=4) def set_target_texture(self, texture: texture.Texture) -> None: """ @@ -157,9 +160,14 @@ def render(self, update_surface: bool=True) -> pygame.Surface: with self.scope: self.framebuffer.use() self.render_rect.vao.render() - surf = pygame.image.frombuffer(self.framebuffer.read(), self.target_surface.get_size(), "RGB") + surf = pygame.image.frombuffer( + self.framebuffer.read(components=4, alignment=1), + self.target_surface.get_size(), + "RGBA" + ) return pygame.transform.flip(surf, False, True) + class ComputeShader: """ Shader class responsible for handling a GLSL compute shader.