#pragma once #include "types.h" #include "Shader.h" #include "mathlib.h" struct Camera3d; struct WebglContext; struct Renderer3d { uint32 shader; struct { int32 position; int32 color; int32 normal; } attributes; struct { int32 projection; int32 view; int32 model; } uniforms; void load(WebglContext* context); void render(Camera3d* camera); void unload(); }; struct Vertex3d { Vector3 position; Vector3 normal; Vector4 color; }; struct Mesh3d { uint32 vao; uint32 vbo; uint32 ebo; uint32 numIndices = 0; Mat4x4 model; void load(Vertex3d* vertices, uint32 numVertices, uint32* indices, uint32 numIndices, Renderer3d* renderer); void render(Renderer3d* renderer, GLenum drawType = GL_TRIANGLES); void unload(); };