Karl Zylinski 4 miesięcy temu
rodzic
commit
940f9b3c4b
3 zmienionych plików z 16 dodań i 0 usunięć
  1. 1 0
      examples/fonts/fonts.odin
  2. 2 0
      karl2d.doc.odin
  3. 13 0
      karl2d.odin

+ 1 - 0
examples/fonts/fonts.odin

@@ -26,5 +26,6 @@ main :: proc() {
 		free_all(context.temp_allocator)
 	}
 
+	k2.destroy_font(cao_font)
 	k2.shutdown()
 }

+ 2 - 0
karl2d.doc.odin

@@ -167,6 +167,8 @@ load_font_from_file :: proc(filename: string) -> Font_Handle
 
 load_font_from_bytes :: proc(data: []u8) -> Font_Handle
 
+destroy_font :: proc
+
 get_default_font :: proc() -> Font_Handle
 
 //---------//

+ 13 - 0
karl2d.odin

@@ -97,6 +97,7 @@ shutdown_wanted :: proc() -> bool {
 shutdown :: proc() {
 	assert(s != nil, "You've called 'shutdown' without calling 'init' first")
 
+	destroy_font(s.default_font)
 	rb.destroy_texture(s.shape_drawing_texture)
 	destroy_shader(s.default_shader)
 	rb.shutdown()
@@ -758,6 +759,18 @@ load_font_from_bytes :: proc(data: []u8) -> Font_Handle {
 	return h
 }
 
+destroy_font :: proc(font: Font_Handle) {
+	if int(font) >= len(s.fonts) {
+		return
+	}
+
+	f := &s.fonts[font]
+	rb.destroy_texture(f.atlas.handle)	
+
+	// TODO fontstash has no "destroy font" proc... I should make my own version of fontstash
+	delete(s.fs.fonts[f.fontstash_handle].glyphs)
+}
+
 get_default_font :: proc() -> Font_Handle {
 	return s.default_font
 }