main: use one primary buffer
This commit is contained in:
parent
0fffccad41
commit
0b73dbff8a
27
main.py
27
main.py
@ -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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user