#ifndef GEOMETRY_H #include "color.h" #include "engine.h" #include "point.h" #include // STRUCTURES struct Texture { ColorU32 texels[TEXTURE_SIZE_LIMIT][TEXTURE_SIZE_LIMIT]; unsigned int width; unsigned int height; }; struct TextureList { Texture data[MATERIAL_LIMIT]; size_t size; }; struct Material { ColorF32 ambient; ColorF32 diffuse; ColorF32 specular; float specularExp; float opacity; }; struct MaterialList { Material data[MATERIAL_LIMIT]; size_t size; }; struct UV { float u; float v; }; struct UVList { UV data[VERTEX_LIMIT]; size_t size; }; struct Vertex { Point point; Vector normal; ColorF32 color; }; struct VertexList { Vertex data[VERTEX_LIMIT]; size_t size; }; struct Face { int vertIndex[3]; int uvIndex[3]; int materialIndex; }; struct FaceList { Face data[FACE_LIMIT]; size_t size; }; struct Mesh { Point position; Point rotation; float scale; }; // PUBLIC FUNCTIONS void ClipAndCull( VertexList &verts, FaceList &localFaces, FaceList &transFaces, Point &camPosition); void RenderMesh( Engine_Buffer &buffer, FaceList &faces, VertexList &verts, UVList &uvs, TextureList &textures); #define GEOMETRY_H #endif