github karl-zylinski/karl2d beta-2026-11

4 hours ago

This release is verified to work with the Odin dev-2026-11 release.

I will drop my "Beta 4" etc versioning number and instead make the releases in tandem with Odin.

New features

  • Texture wrapping settings. Use set_texture_wrap to set what happens when you sample outside the texture.
  • set_texture_sampler replaces the old set_texture_filter_ex. It's for "advanced" usages of filters and wrapping settings. You can use it specify the Border wrapping mode, along with what border color to use.
  • Mipmapping support:
    • create_texture now takes mip_levels := 1 param
    • load_texture_from_file, load_texture_from_bytes, load_texture_from_bytes_raw and load_texture_from_image can now have generate_mipmap and mip_levels specified in options
    • load_texture_from_mipmap_images: New proc. For creating a whole mip chain from a series of images.
    • update_texture has a new mip_level := 0 param
    • generate_mipmap: New proc. Generates mipmap for a texture (the texture must have been created with mip levels)
    • get_max_mip_levels: New proc. Tells you the maximum number of mip levels a texture can have.
    • get_texture_mip_levels: New proc. Tells you how many mip levels a texture has.
    • get_mip_level_width/height: New procs. Get the size a specific mip level. Useful in combination with update_texture.

Breaking changes

  • Texture is now a pure handle. You can't use tex.width or tex.height anymore. Use get_texture_width, get_texture_height or get_texture_size instead.
  • Load_Texture_Options is now a struct instead of a bit_set. For example, {.Premultiply_Alpha} becomes {premultiply_alpha = true}.

Behind the scenes

  • GL render backends now use samplers instead of settings on the texture

Misc

  • New proc: is_texture_valid.
  • New examples: mipmap and texture_wrap.
  • Fixed a memory leak in the font cache

Don't miss a new karl2d release

NewReleases is sending notifications on new releases.