A small OpenGL 3+ renderer and game engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

40 lines
1.0 KiB

#pragma once
#include <glm/glm.hpp>
#include "mesh.h"
#include "render_object.h"
#include "types.h"
// TODO: having a separate code path for each shader is annoying and error
// prone. could try using opaque pointers at high level (renderer, entity),
// and then cast to the appropriate render_object/mesh/shader type in the lower
// level functions based on the mesh_type property
struct entity
{
glm::mat4 world_transform;
// TODO: hide simple_mesh/mesh_group pointer behind abstraction
simple_mesh* mesh;
// TODO: should be a pointer into a global array of mesh_info(s) or
// mesh_groups stored on the render_state object
mesh_group meshes;
render_objects* render_objs;
};
bool entInitModel(entity& e, const char* model_path);
bool entInitMesh(entity& e, simple_mesh* mesh, GLenum draw_mode);
void entFree(entity& e);
void entSetWorldPosition(entity& e, glm::vec3 v);
void entTranslate(entity& e, glm::vec3 v);
void entScale(entity& e, glm::vec3 v);
void entRotate(entity& e, float angle, glm::vec3 axis);