Optimization: Do not reinitialize pixel array at every line draw
This commit is contained in:
parent
b398503ada
commit
b063e5606e
@ -107,6 +107,7 @@ class Main:
|
||||
self.raycastWindow = sdl2.ext.Window("3D View", size=(RAYCAST_WIN_WIDTH, RAYCAST_WIN_HEIGHT))
|
||||
self.raycastWindow.show()
|
||||
self.raycastSurface = self.raycastWindow.get_surface()
|
||||
self.raycast_u32_pixels = ctypes.cast(self.raycastSurface.pixels, ctypes.POINTER(ctypes.c_uint32)) # Raw SDL surface pixel array
|
||||
|
||||
# Player
|
||||
self.player_position = PLAYER_SPAWN_POSITION
|
||||
@ -379,10 +380,9 @@ class Main:
|
||||
self.drawVline(self.raycastSurface, color, x, int(lineStart), int(lineEnd))
|
||||
|
||||
def drawVline(self, surface, color, x, startY, endY):
|
||||
u32_pixels = ctypes.cast(self.raycastSurface.pixels, ctypes.POINTER(ctypes.c_uint32));
|
||||
startIdx = startY * RAYCAST_WIN_WIDTH + x
|
||||
for idx in range(startIdx, endY * RAYCAST_WIN_WIDTH + x, RAYCAST_WIN_WIDTH):
|
||||
u32_pixels[idx] = color
|
||||
self.raycast_u32_pixels[idx] = color
|
||||
|
||||
|
||||
def dist(self, ax, ay, bx, by):
|
||||
|
Loading…
Reference in New Issue
Block a user