暫無描述

Karl Zylinski d14d3984cf Work on splitting up shader stuff 6 月之前
examples 97d92b799f Circle drawing, line rendering, win32 mouse position things etc 6 月之前
handle_map c994c4c77b Some kind of texture handle concept 6 月之前
.gitignore b438621db6 Some initial work on loading shaders. Fetches constant buffer locations using reflection and makes it possible to set them. A constant buffer field called 'mvp' is automatically filled if found 6 月之前
LICENSE 361c3c9672 Snake example 7 月之前
README.md 75aad76d41 Some random format things 6 月之前
backend_d3d11.odin d14d3984cf Work on splitting up shader stuff 6 月之前
backend_interface.odin c68dae4133 Just a few renames 6 月之前
karl2d.odin d14d3984cf Work on splitting up shader stuff 6 月之前
shader.hlsl c37445fc8c Fix textured drawing hacks 6 月之前
window_interface.odin 4265b19eb0 Properly restore internal state on set_internal_state 6 月之前
window_win32.odin aeb9b0be8d Trying a new way to organize interfaces 6 月之前

README.md

This library is NOT ready for use!

Karl2D is a work-in-progress library for creating 2D games using the Odin Programming Language.

The API is based on Raylib because I like that API. But the implementation is meant to have as few dependencies as possible (only core libs and rendering APIs in vendor). The API will not be identical to Raylib. I'll modify to fit Odin better etc.

What features of Raylib will not be included?

  • 3D
  • Some maths things that can be found in Odin's core libs

Might not be included:

  • Time management (use core:time instead)

TODO

Here follows my near-future TODO list

  • Fix the depedency on D3D stuff so we can move load_shader etc
  • Is the 1/zoom in set_camera wrong? Is the matrix multiply order wrong? Hmmmm...
  • Textures: Make the sampler state configurable
  • Textures D3D11: Do we need the SRV in the texture?
  • Flashing textures in Abyss
  • Do proper checks of vertex count and dispatch rendering when full
    • What happens when list is full? We can't just empty the vertex list due to being used by input assembler etc.
  • Should we sort by depth? Maybe we should use Vec3 because some 2D games rely on it?
    • I think we should.
  • Shaders: Reflect and expose samplers

DONE

  • Shaders: Basic loading
  • Shaders: Constants that you can set
  • Shaders: Dynamic vertex creation
  • Shaders: Feed extra vertex field values using some kind of context
    • Do we need one for all corners of a rect or possibilty to supply different value for the different corners?
  • Group set_tex, camera etc into a section of things that cause a render batch dispatch when changed.
  • Make a texture for drawing a rectangle and remove the hack in shader.hlsl
  • Load textures and somehow bind to shader -- split draw calls on texture switch -- needs a start of a batch system.
  • Make 0, 0 be at top left (should vertex data be flipped, or is it a transformation thingy?)
  • Construct vertex buffer from k2.draw_blabla calls. Do we need index buffer? 🤷‍
  • Organize the d3d11 things neatly. It's just a hack right now!
    • enable debug layers
    • asserting on hresult and checking errors
    • clean up on shutdown