render_texture.odin 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package karl2d_minimal_example
  2. import k2 "../.."
  3. import "core:mem"
  4. import "core:log"
  5. import "core:math"
  6. import "core:fmt"
  7. _ :: fmt
  8. _ :: mem
  9. main :: proc() {
  10. context.logger = log.create_console_logger()
  11. init()
  12. run := true
  13. for run {
  14. run = step()
  15. }
  16. shutdown()
  17. }
  18. render_texture: k2.Render_Texture
  19. init :: proc() {
  20. k2.init(1080, 1080, "Karl2D Render Texture Example")
  21. render_texture = k2.create_render_texture(75, 48)
  22. }
  23. rot: f32
  24. step :: proc() -> bool {
  25. k2.new_frame()
  26. k2.process_events()
  27. k2.set_render_texture(render_texture)
  28. k2.clear(k2.ORANGE)
  29. rot += k2.get_frame_time() * 500
  30. if rot > 360 {
  31. rot -= 360
  32. }
  33. k2.draw_rect_ex({12, 12, 12, 12}, {6, 6}, rot, k2.BLACK)
  34. k2.draw_text("Hellöpe!", {f32(math.sin(k2.get_time() * 10))*5 + 7, 20}, 20, k2.BLACK)
  35. k2.set_render_texture(nil)
  36. k2.clear(k2.BLACK)
  37. rt_size := k2.get_texture_rect(render_texture.texture)
  38. k2.draw_texture_ex(render_texture.texture, rt_size, {0, 0, rt_size.w * 5, rt_size.h * 5}, {}, 0)
  39. k2.draw_texture(render_texture.texture, {400, 20})
  40. k2.draw_texture_ex(render_texture.texture, rt_size, {512, 512, rt_size.w * 5, rt_size.h * 5}, {}, 70, k2.WHITE)
  41. k2.present()
  42. free_all(context.temp_allocator)
  43. return !k2.shutdown_wanted()
  44. }
  45. shutdown :: proc() {
  46. k2.destroy_render_texture(render_texture)
  47. k2.shutdown()
  48. }