X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=scene.h;h=aeecd4e1e3d4df1e7a179dd1701efe66a2159e38;hb=be8ea6efdbfd9c0fdad97401ed7d92041d8c8778;hp=fb758eb5a3e47edb0a6396db06886d1c1a99628e;hpb=0ca7f5ca2560908de1a03db112df67e52b476107;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/scene.h b/scene.h index fb758eb..aeecd4e 100644 --- a/scene.h +++ b/scene.h @@ -78,8 +78,7 @@ VG_STATIC void scene_vert_pack_norm( scene_vert *vert, v3f norm ) VG_STATIC void scene_add_mdl_submesh( scene *pscene, mdl_context *mdl, mdl_submesh *sm, m4x3f transform ) { - if( pscene->vertex_count + sm->vertex_count > pscene->max_vertices ) - { + if( pscene->vertex_count + sm->vertex_count > pscene->max_vertices ){ vg_error( "%u(current) + %u > %u\n", pscene->vertex_count, sm->vertex_count, pscene->max_vertices ); @@ -88,8 +87,7 @@ VG_STATIC void scene_add_mdl_submesh( scene *pscene, mdl_context *mdl, vg_fatal_exit_loop( "Scene vertex buffer overflow" ); } - if( pscene->indice_count + sm->indice_count > pscene->max_indices ) - { + if( pscene->indice_count + sm->indice_count > pscene->max_indices ){ vg_error( "%u(current) + %u > %u\n", pscene->indice_count, sm->indice_count, pscene->max_indices ); @@ -98,10 +96,10 @@ VG_STATIC void scene_add_mdl_submesh( scene *pscene, mdl_context *mdl, vg_fatal_exit_loop( "Scene index buffer overflow" ); } - mdl_vert *src_verts = mdl_submesh_vertices( mdl, sm ); + mdl_vert *src_verts = mdl_arritm( &mdl->verts, sm->vertex_start ); scene_vert *dst_verts = &pscene->arrvertices[ pscene->vertex_count ]; - u32 *src_indices = mdl_submesh_indices( mdl, sm ), + u32 *src_indices = mdl_arritm( &mdl->indices, sm->indice_start ), *dst_indices = &pscene->arrindices[ pscene->indice_count ]; /* Transform and place vertices */ @@ -116,10 +114,9 @@ VG_STATIC void scene_add_mdl_submesh( scene *pscene, mdl_context *mdl, v3_normalize( normal_matrix[1] ); v3_normalize( normal_matrix[2] ); - for( u32 i=0; ivertex_count; i++ ) - { - mdl_vert *src = &src_verts[ i ]; - scene_vert *pvert = &dst_verts[ i ]; + for( u32 i=0; ivertex_count; i++ ){ + mdl_vert *src = &src_verts[i]; + scene_vert *pvert = &dst_verts[i]; m4x3_mulv( transform, src->co, pvert->co ); @@ -187,7 +184,7 @@ VG_STATIC scene *scene_fix( void *lin_alloc, scene *pscene ) indice_count = pscene->indice_count, vertex_length = vertex_count * sizeof(scene_vert), index_length = indice_count * sizeof(u32), - tot_size = sizeof(scene) + vertex_length + index_length; + tot_size = vg_align8(sizeof(scene) + vertex_length + index_length); /* copy down index data */ void *dst_indices = pscene->arrvertices + vertex_count; @@ -250,7 +247,7 @@ VG_STATIC void scene_upload( scene *pscene, glmesh *mesh ) glEnableVertexAttribArray( 0 ); /* 1: normal */ - glVertexAttribPointer( 1, 3, GL_BYTE, GL_TRUE, + glVertexAttribPointer( 1, 4, GL_BYTE, GL_TRUE, stride, (void *)offsetof(scene_vert, norm) ); glEnableVertexAttribArray( 1 );