more render improve :D

This commit is contained in:
Lukas Nöllemeyer 2024-08-19 20:04:08 +02:00
parent af941dc848
commit 200a0a4996
4 changed files with 18 additions and 10 deletions

3
g.py
View file

@ -37,6 +37,9 @@ sdl_window: tcod.sdl.video.Window
sdl_renderer: tcod.sdl.render.Renderer sdl_renderer: tcod.sdl.render.Renderer
"""The SDL renderer""" """The SDL renderer"""
target_texture: tcod.sdl.render.Texture
"""The final texture that is rendered"""
atlas: tcod.render.SDLTilesetAtlas atlas: tcod.render.SDLTilesetAtlas
"""The tileset atlas""" """The tileset atlas"""

View file

@ -9,6 +9,10 @@ from tcod.console import Console
from tcod.event import Event, Quit from tcod.event import Event, Quit
from tcod.event import wait as wait_for_event from tcod.event import wait as wait_for_event
import tcod.event import tcod.event
import tcod.render
import tcod.sdl
import tcod.sdl.render
import tcod.sdl.video
import g import g
@ -62,13 +66,16 @@ def main_draw() -> None:
# g.sdl_renderer.copy(g.console_render.render(g.background)) # g.sdl_renderer.copy(g.console_render.render(g.background))
# g.foreground.blit(g.background, fg_alpha=1.0, bg_alpha=0.0) # g.foreground.blit(g.background, fg_alpha=1.0, bg_alpha=0.0)
bg_tex = g.console_render1.render(g.background) bg_tex = g.console_render1.render(g.background)
bg_tex.blend_mode = 1 bg_tex.blend_mode = 1
fg_tex = g.console_render2.render(g.foreground) fg_tex = g.console_render2.render(g.foreground)
fg_tex.blend_mode = 1 fg_tex.blend_mode = 1
with g.sdl_renderer.set_render_target(bg_tex): with g.sdl_renderer.set_render_target(g.target_texture):
g.sdl_renderer.clear()
g.sdl_renderer.copy(bg_tex)
g.sdl_renderer.copy(fg_tex) g.sdl_renderer.copy(fg_tex)
g.sdl_renderer.copy(bg_tex) g.sdl_renderer.copy(g.target_texture)
g.sdl_renderer.present() g.sdl_renderer.present()

View file

@ -62,7 +62,9 @@ def _draw_entity(entity: tcod.ecs.Entity, camera_pos, camera_radius_x, camera_ra
map_pos = world_pos_to_map_pos(pos) map_pos = world_pos_to_map_pos(pos)
if g.world[None].components[Map].fov[map_pos.y, map_pos.x]: if g.world[None].components[Map].fov[map_pos.y, map_pos.x]:
graphic = entity.components[Graphic] graphic = entity.components[Graphic]
g.foreground.rgba[["ch", "fg"]][screen_pos.y + camera_radius_y, screen_pos.x + camera_radius_x] = graphic.ch, graphic.fg r,gg,b,a = graphic.fg
fg = (r,gg,b,255)
g.foreground.rgba[["ch", "fg"]][screen_pos.y + camera_radius_y, screen_pos.x + camera_radius_x] = graphic.ch, fg
@attrs.define() @attrs.define()

10
main.py
View file

@ -24,18 +24,14 @@ def main() -> None:
g.screens = [MainMenu()] g.screens = [MainMenu()]
g.background = tcod.console.Console(80, 35) g.background = tcod.console.Console(80, 35)
g.foreground = tcod.console.Console(80, 35) g.foreground = tcod.console.Console(80, 35)
w, h = g.background.width * g.tileset.tile_width, g.background.height * g.tileset.tile_height
win = tcod.sdl.video.new_window( win = tcod.sdl.video.new_window(w,h, flags=tcod.lib.SDL_WINDOW_RESIZABLE)
g.background.width * g.tileset.tile_width,
g.background.height * g.tileset.tile_height,
flags=tcod.lib.SDL_WINDOW_RESIZABLE,
)
g.sdl_window = win g.sdl_window = win
g.sdl_renderer = tcod.sdl.render.new_renderer(g.sdl_window, target_textures=True) g.sdl_renderer = tcod.sdl.render.new_renderer(g.sdl_window, target_textures=True)
g.target_texture = g.sdl_renderer.new_texture(w, h, access=tcod.sdl.render.TextureAccess.TARGET)
g.atlas = tcod.render.SDLTilesetAtlas(g.sdl_renderer, g.tileset) g.atlas = tcod.render.SDLTilesetAtlas(g.sdl_renderer, g.tileset)
g.console_render1 = tcod.render.SDLConsoleRender(atlas=g.atlas) g.console_render1 = tcod.render.SDLConsoleRender(atlas=g.atlas)