strichmaennchen git · main
git clone https://git.christianimmanuel.de/games/strichmaennchen.gitwget https://git.christianimmanuel.de/games/strichmaennchen/archive/strichmaennchen.tar.gzmesh.h raw
#ifndef MESH_H
#define MESH_H
#include <SDL3/SDL.h>
#include <GL/gl.h>
#include "linalg.h"
#include "time.h"
struct Renderer;
typedef enum {
CUBE_VERTICES_STANDARD,
CUBE_VERTICES_GROUND,
CUBE_VERTICES_MODERN,
CUBE_VERTICES_WARM,
// add more presets if needed
} VertexPreset;
typedef struct Mesh {
GLuint vao; // Vertex Array Object
GLuint vbo; // Vertex Buffer Object
GLuint ebo; // Element Buffer Object (optional, 0 if not used)
GLsizei vertexCount; // number of vertices (for glDrawArrays)
GLsizei indexCount; // number of indices (for glDrawElements)
GLboolean hasIndices; // whether EBO is used
GLenum drawMode; // GL_TRIANGLES, GL_LINES, etc.
} Mesh;
typedef struct TransformMatrices {
Mat4 projection;
Mat4 view;
Mat4 model;
} TransformMatrices;
extern const Mesh mesh_default;
void Mesh_draw(Mesh mesh, struct Renderer *renderer, TransformMatrices* trans_matrices, Time* time, Vec3 viewPos);
Mesh Mesh_createTriangle();
Mesh Mesh_createPyramid(float size, float height);
//Mesh Mesh_createCube(float size, float height);
Mesh Mesh_createCube(Vec3 size, VertexPreset preset);
Mesh Mesh_createCylinder(float diameter, float height, int segments, VertexPreset preset);
Mesh Mesh_createHuman(VertexPreset preset, bool is_player);
Mesh Mesh_createAxes(float length);
Mesh Mesh_createTree(float trunkHeight, float trunkRadius, int leafLayers, float leafRadius);
Mesh Mesh_createHouse();
Mesh Mesh_createBarn();
#endif