From 50a8d3dc884816fbb1e3a3df3c401358e62b5eea Mon Sep 17 00:00:00 2001 From: sanine-a Date: Tue, 27 Oct 2020 15:01:15 -0500 Subject: revert mesh.* with minor refactor and honey_setup_mesh() --- src/mesh/mesh.h | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) (limited to 'src/mesh/mesh.h') diff --git a/src/mesh/mesh.h b/src/mesh/mesh.h index 1f3bc3e..81bcc94 100644 --- a/src/mesh/mesh.h +++ b/src/mesh/mesh.h @@ -6,45 +6,49 @@ * @brief Defines the honey_mesh struct and related basic mesh functions. */ - - #include "../common.h" -#include "../shader/shader.h" typedef struct { unsigned int n_vertices, n_indices; - unsigned int vertex_array, vertex_buffer, element_buffer; + unsigned int vertex_array, vertex_buffer, element_buffer; } honey_mesh; -/** @brief Push the mesh bindings to the lua stack. */ -void honey_setup_mesh(); +/** @brief Lua bindings for mesh drawing and deletion functions. */ +void honey_setup_mesh(lua_State* L); /** @brief Create a new mesh from vertex and index arrays. * - * This function copies the data, so you can safely permit vertices and - * indices to be garbage collected after calling it. - * - * @param[in] vertices Userdata array containing the vertices. - * @param[in] indices Userdata array defining the mesh faces. - * @param[in] attributes Lua table containing the attribute sizes. - * @param[in] n_vertices Integer number of vertices. - * @param[in] n_indices Integer number of indices. + * Note that this function creates copies of the vertex and index arrays, + * so you can deallocate those immediately. * - * @returns Userdata containing the mesh's OpenGL handles. + * @param[out] mesh Pointer to the destination honey_mesh struct + * @param[in] vertices Array of floats representing the vertices + * @param[in] n_attributes The number of attributes per vertex + * @param[in] attribute_sizes An array containing for each attribute how many floats it contains + * @param[in] n_vertices The number of vertices (NOT the number of floats in the vertex array) + * @param[in] indices Array of vertex indices + * @param[in] n_indices The number of elements in the index array */ -int honey_mesh_new(lua_State* L); +honey_result honey_mesh_new(honey_mesh* mesh, + float* vertices, + unsigned int n_vertices, + unsigned int n_attributes, + unsigned int* attribute_sizes, + unsigned int* indices, + unsigned int n_indices); /** @brief Draw a mesh on screen. * * @param[in] mesh The mesh to draw * @param[in] shader The shader to use when drawing the mesh */ -int honey_mesh_draw(lua_State* L); +void honey_mesh_draw(honey_mesh mesh, + int shader); /** @brief Delete a mesh. * * @param[in] mesh The mesh to delete */ -int honey_mesh_delete(lua_State* L); +void honey_mesh_delete(honey_mesh mesh); #endif -- cgit v1.2.1