diff options
| author | Matt Kosarek <matt.kosarek@canonical.com> | 2025-12-29 09:34:00 -0500 |
|---|---|---|
| committer | Matt Kosarek <matt.kosarek@canonical.com> | 2025-12-29 09:34:00 -0500 |
| commit | bf4b3a5c35152c1292757134123b3363d0f81bf6 (patch) | |
| tree | 7796e03d309c43115596f78d553a74f911f82218 /themes/src/renderer_3d.h | |
| parent | 25c93a0ab9c855f75ee48df635fb5422c8eaba95 (diff) | |
Renamed PascalCase files to snake_case
Diffstat (limited to 'themes/src/renderer_3d.h')
| -rw-r--r-- | themes/src/renderer_3d.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/themes/src/renderer_3d.h b/themes/src/renderer_3d.h new file mode 100644 index 0000000..5b2c8c8 --- /dev/null +++ b/themes/src/renderer_3d.h @@ -0,0 +1,56 @@ +#ifndef RENDERER3D_H +#define RENDERER3D_H +#include "mathlib.h" +#include "list.h" +#include "types.h" +#include <string> + +struct Renderer3d; + +struct Vertex3d { + Vector4 position; + Vector4 color; + Vector4 normal; +}; + +struct Mesh3d { + u32 vao; + u32 vbo; + u32 ebo; + matte::List<Vertex3d> vertices; + matte::List<u32> indices; + Mat4x4 model; + + void load(Renderer3d* renderer); + void render(Renderer3d* renderer); + void unload(); +}; + +struct WebglContext; +struct Renderer3d { + WebglContext* context = NULL; + Mat4x4 projection; + Mat4x4 view; + u32 shader; + Vector4 clearColor; + + struct { + i32 position; + i32 color; + i32 normal; + } attributes; + + struct { + i32 projection; + i32 view; + i32 model; + } uniforms; + + void load(WebglContext* context, const char* vertexShader, const char* fragmentShader); + void render(); + void unload(); +}; + +Mesh3d Mesh3d_fromObj(Renderer3d* renderer, const char* content, const i32 len); + +#endif |
