From e1a6fc09afc088dcb67263ed5923f5be41c32c31 Mon Sep 17 00:00:00 2001 From: Tim Keller Date: Sun, 25 May 2025 21:38:37 -0500 Subject: use lazy caching texture list to limit number of images loaded at one time --- window.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'window.py') diff --git a/window.py b/window.py index 24320b9..1523f85 100644 --- a/window.py +++ b/window.py @@ -5,16 +5,15 @@ from time import time from queue import Queue from renderer import ImageRenderer, TransitionMix -from texture import ImageTexture class PixDisplay: - def __init__(self): + def __init__(self, textures): self.last_time = 0 self.start_time = 0 self.image_time = 0 self.paused = False - self.textures = [] + self.textures = textures self.current_texture_index = 0 self.renderer = None self.win_w = 0 @@ -42,16 +41,16 @@ class PixDisplay: self.frame_time = int(1000 / 60) # In ms def increment_texture_index(self, increment): - if len(self.textures) < 2: - return - self.transition_reverse = increment < 0 self.tex_prev = self.textures[self.current_texture_index] self.current_texture_index = (self.current_texture_index + increment) % len(self.textures) self.tex = self.textures[self.current_texture_index] - # Ensure textures are initialized + if not self.tex.initialized or not self.tex_prev.initialized: + return + + # Ensure textures are initialized for opengl self.tex_prev.gl_init() self.tex.gl_init() @@ -63,10 +62,10 @@ class PixDisplay: delta_time = current_time - self.last_time self.last_time = current_time - if not self.tex: + if not self.tex or not self.tex.initialized or not self.tex.id: self.increment_texture_index(0) # Draw black window if no textures are available - if not self.tex: + if not self.tex.id: glClearColor(0.0, 0.0, 0.0, 1.0) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glutSwapBuffers() -- cgit v1.2.3