render_texture.odin 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package karl2d_minimal_example
  2. import k2 "../.."
  3. import "core:mem"
  4. import "core:log"
  5. import "core:fmt"
  6. _ :: fmt
  7. _ :: mem
  8. main :: proc() {
  9. context.logger = log.create_console_logger()
  10. when ODIN_DEBUG {
  11. track: mem.Tracking_Allocator
  12. mem.tracking_allocator_init(&track, context.allocator)
  13. context.allocator = mem.tracking_allocator(&track)
  14. defer {
  15. if len(track.allocation_map) > 0 {
  16. for _, entry in track.allocation_map {
  17. fmt.eprintf("%v leaked: %v bytes\n", entry.location, entry.size)
  18. }
  19. }
  20. mem.tracking_allocator_destroy(&track)
  21. }
  22. }
  23. k2.init(1080, 1080, "Karl2D Render Texture Example")
  24. k2.set_window_position(300, 100)
  25. tex := k2.load_texture_from_file("sixten.jpg")
  26. render_texture := k2.create_render_texture(200, 200)
  27. for !k2.shutdown_wanted() {
  28. k2.process_events()
  29. k2.set_render_texture(render_texture)
  30. k2.clear(k2.BLUE)
  31. k2.draw_rect({10, 10, 60, 60}, k2.GREEN)
  32. k2.draw_rect({20, 20, 40, 40}, k2.BLACK)
  33. k2.draw_circle({120, 40}, 30, k2.BLACK)
  34. k2.draw_circle({120, 40}, 20, k2.GREEN)
  35. k2.draw_text("Hellöpe!", {10, 100}, 64, k2.WHITE)
  36. k2.draw_texture_ex(tex, {0, 0, f32(tex.width), f32(tex.height)}, {10, 200, 900, 500}, {}, 0)
  37. k2.set_render_texture(nil)
  38. k2.clear(k2.GRAY)
  39. k2.draw_texture(render_texture.texture, {20, 20}, k2.WHITE)
  40. k2.draw_texture(render_texture.texture, {100, 500}, k2.WHITE)
  41. k2.draw_texture(render_texture.texture, {400, 20}, k2.WHITE)
  42. k2.present()
  43. free_all(context.temp_allocator)
  44. }
  45. k2.destroy_texture(tex)
  46. k2.shutdown()
  47. }