main: use one primary buffer

This commit is contained in:
Zack Buhman 2025-02-11 22:53:53 -06:00
parent 0fffccad41
commit 0b73dbff8a

27
main.py
View File

@ -92,18 +92,7 @@ def new_tile_surface():
x_tiles = (640 // 32) x_tiles = (640 // 32)
y_tiles = (480 // 32) y_tiles = (480 // 32)
color_buffer_list = [ primary_buffer = None
new_tile_surface()
for _ in range(x_tiles * y_tiles)
]
depth_buffer_list = [
new_tile_surface()
for _ in range(x_tiles * y_tiles)
]
color_test_surface = new_tile_surface()
depth_test_surface = new_tile_surface()
def draw_background(tile): def draw_background(tile):
t = holly.ISP_BACKGND_T t = holly.ISP_BACKGND_T
@ -127,16 +116,14 @@ def draw_background(tile):
points = [(0, 0), (640, 0), (640, 480), (0, 480)] points = [(0, 0), (640, 0), (640, 480), (0, 480)]
tile_ix = tile.tile_y_position * x_tiles + tile.tile_x_position tile_ix = tile.tile_y_position * x_tiles + tile.tile_x_position
color_buffer = color_buffer_list[tile_ix] pygame.draw.polygon(primary_buffer, color, points)
pygame.draw.polygon(color_buffer, color, points)
def tile_callback(tile): def tile_callback(tile):
draw_background(tile) draw_background(tile)
def flush_callback(tile, *, screen): def flush_callback(tile, *, screen):
tile_ix = tile.tile_y_position * x_tiles + tile.tile_x_position tile_ix = tile.tile_y_position * x_tiles + tile.tile_x_position
color_buffer = color_buffer_list[tile_ix] screen.blit(primary_buffer, (tile.tile_x_position * 32, tile.tile_y_position * 32))
screen.blit(color_buffer, (tile.tile_x_position * 32, tile.tile_y_position * 32))
pygame.display.flip() pygame.display.flip()
time.sleep(0.1) time.sleep(0.1)
@ -150,7 +137,6 @@ def parameter_callback(tile, list_type_name, list_pointer, ol_entry, parameter):
top = tile.tile_y_position * 32 top = tile.tile_y_position * 32
tile_ix = tile.tile_y_position * x_tiles + tile.tile_x_position tile_ix = tile.tile_y_position * x_tiles + tile.tile_x_position
color_buffer = color_buffer_list[tile_ix]
assert type(ol_entry) == triangle_array, ol_entry assert type(ol_entry) == triangle_array, ol_entry
assert len(parameter.vertices) == 3, parameter.vertices assert len(parameter.vertices) == 3, parameter.vertices
@ -170,13 +156,16 @@ def parameter_callback(tile, list_type_name, list_pointer, ol_entry, parameter):
assert red > 10 or blue > 10 or green > 10, argb_color assert red > 10 or blue > 10 or green > 10, argb_color
pygame.draw.polygon(color_buffer, color, points) pygame.draw.polygon(primary_buffer, color, points)
def draw(): def draw():
pygame.init() pygame.init()
screen = pygame.display.set_mode((640, 480)) screen = pygame.display.set_mode((640, 480))
sys.stdin.readline() global primary_buffer
primary_buffer = new_tile_surface()
#sys.stdin.readline()
walk_region_array(tile_callback=tile_callback, walk_region_array(tile_callback=tile_callback,
parameter_callback=parameter_callback, parameter_callback=parameter_callback,