diff --git a/example/Vulkan/LoadStaticMesh.cpp b/example/Vulkan/LoadStaticMesh.cpp index dd5080f2..3a896ed7 100644 --- a/example/Vulkan/LoadStaticMesh.cpp +++ b/example/Vulkan/LoadStaticMesh.cpp @@ -194,6 +194,9 @@ private: { CubeCreateInfo cci(model_data->bounding_box); + cci.has_color=true; + cci.color.Set(1,1,1,1); + bbox_renderable=CreateRenderableBoundingBox(db,mp_line.material,&cci); bbox_renderable_instance=CreateRenderableInstance(mp_line,bbox_renderable); } diff --git a/inc/hgl/graph/InlineGeometry.h b/inc/hgl/graph/InlineGeometry.h index 507eb196..cce79211 100644 --- a/inc/hgl/graph/InlineGeometry.h +++ b/inc/hgl/graph/InlineGeometry.h @@ -94,12 +94,15 @@ namespace hgl Vector3f size; Vector2f tile; + bool has_color; + Vector4f color; + public: void Set(const AABB &box) { center=box.CenterPoint().xyz(); - size=box.HalfSize().xyz(); + size=box.Size().xyz(); } CubeCreateInfo() @@ -107,12 +110,16 @@ namespace hgl center.Set(0,0,0); size.Set(1,1,1); tile.Set(1,1); + + has_color=false; } CubeCreateInfo(const AABB &box) { Set(box); tile.Set(1,1); + + has_color=false; } };//struct CubeCreateInfo diff --git a/src/SceneGraph/InlineGeometry.cpp b/src/SceneGraph/InlineGeometry.cpp index bf06c960..c679c9a1 100644 --- a/src/SceneGraph/InlineGeometry.cpp +++ b/src/SceneGraph/InlineGeometry.cpp @@ -1263,6 +1263,20 @@ namespace hgl } } + if(cci->has_color) + { + float *color_pointer=gc.GetColorPointer(); + + if(color_pointer) + { + for(uint i=0;i<8;i++) + { + memcpy(color_pointer,&(cci->color),4*sizeof(float)); + color_pointer+=4; + } + } + } + gc.CreateIBO16(24,indices); return gc.Finish();