X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=pointcloud.h;h=89621a4613d800364049de09f3f55f1eaa343174;hb=e311bbe2fa903a7e2a922f202f389b799193195d;hp=4775dd747fd2b18affbb708d0ac73648d2188420;hpb=5d5d5f394cbe2212769bc58a70fa622b4ed46205;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/pointcloud.h b/pointcloud.h index 4775dd7..89621a4 100644 --- a/pointcloud.h +++ b/pointcloud.h @@ -1,4 +1,5 @@ -#ifndef POINTCLOUD_H +#if 0 +//#ifndef POINTCLOUD_H #define POINTCLOUD_H #include "common.h" @@ -46,8 +47,7 @@ struct pointcloud_buffer{ pointcloud_vert buf[]; }; -static void async_pointcloud_sub( void *payload, u32 size ) -{ +static void async_pointcloud_sub( void *payload, u32 size ){ glBindVertexArray( pointcloud.vao ); glBindBuffer( GL_ARRAY_BUFFER, pointcloud.vbo ); @@ -75,8 +75,7 @@ static void async_pointcloud_sub( void *payload, u32 size ) } } -static void async_pointcloud_alloc( void *payload, u32 size ) -{ +static void async_pointcloud_alloc( void *payload, u32 size ){ glGenVertexArrays( 1, &pointcloud.vao ); glGenBuffers( 1, &pointcloud.vbo ); glBindVertexArray( pointcloud.vao ); @@ -98,26 +97,22 @@ static void async_pointcloud_alloc( void *payload, u32 size ) VG_CHECK_GL_ERR(); } -static void pointcloud_init(void) -{ +static void pointcloud_init(void){ vg_async_call( async_pointcloud_alloc, NULL, 0 ); shader_point_map_register(); } -static void pointcloud_animate( enum pointcloud_anim anim ) -{ +static void pointcloud_animate( enum pointcloud_anim anim ){ pointcloud.anim = anim; pointcloud.anim_start = vg.time; } -static int pointcloud_idle(void) -{ +static int pointcloud_idle(void){ if( pointcloud.anim >= k_pointcloud_anim_idle_any ) return 1; else return 0; } -static void pointcloud_render( world_instance *world, camera *cam, m4x3f model ) -{ +static void pointcloud_render( camera *cam, m4x3f model ){ if( pointcloud.anim < k_pointcloud_anim_idle_any ){ f32 const k_transition = 0.6f; f32 t = (vg.time - pointcloud.anim_start) / k_transition; @@ -157,4 +152,21 @@ static void pointcloud_render( world_instance *world, camera *cam, m4x3f model ) glDrawArrays( GL_POINTS, 0, pointcloud.count ); } +static void pointcloud_packvert( pointcloud_vert *vert, v3f pos, v4f colour ){ + for( u32 i=0; i<3; i++ ) + vert->pos[i] = (pos[i]-0.5f) * 32767.0f; + + for( u32 i=0; i<4; i++ ) + vert->colour[i] = colour[i] * 255.0f; +} + +static void pointcloud_async_end(void *_, u32 __){ + pointcloud_animate( k_pointcloud_anim_opening ); +} + +static void pointcloud_clear_async(void *_, u32 __){ + pointcloud.count = 0; + pointcloud_animate( k_pointcloud_anim_opening ); +} + #endif /* POINTCLOUD_H */