#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
+enum GEOM_BIND {
+ VERTEX_BIND,
+ NORMAL_BIND,
+ TEXCOORD_BIND,
+ TANGENT_BIND,
+ IDX_BIND
+};
+
+enum GEOM_LOC {
+ VERTEX_LOC,
+ NORMAL_LOC,
+ TANGENT_LOC,
+ IDX_LOC
+};
+
struct vk_ctx
{
VkInstance inst;
struct vk_att_props props;
};
-struct vk_vertex_info
+struct vk_buf
{
- int num_verts;
- int num_components;
+ VkBuffer buf;
+ struct vk_mem_obj mobj;
+};
+
+struct vk_vbo {
+ int num_vertices;
+ struct vk_buf vbo;
- VkPrimitiveTopology topology;
+ /* int num_components; */
};
-struct vk_buf
+struct vk_geometry
{
- VkBuffer buf;
- struct vk_mem_obj mobj;
+ struct vk_vbo vertices;
+ struct vk_vbo normals;
+ struct vk_vbo tangents;
+ struct vk_vbo indices;
+
+ VkPrimitiveTopology topo;
};
struct vk_renderer
VkShaderModule vs;
VkShaderModule fs;
- struct vk_vertex_info vertex_info;
+ struct vk_geometry *geometry;
};
struct vk_dims
int num_color_att,
struct vk_att_props *color_props,
struct vk_att_props *depth_props,
- struct vk_vertex_info *vert_info,
+ struct vk_geometry *geometry,
struct vk_renderer *renderer);
void
vk_record_cmd_buffer(struct vk_ctx *ctx,
VkCommandBuffer cmd_buf,
struct vk_renderer *renderer,
- struct vk_buf *vbo,
uint32_t vk_fb_color_count,
float *vk_fb_color,
VkFramebuffer fb,