redesign CreateRenderableAxis
This commit is contained in:
parent
cca69c10b9
commit
2045743249
@ -26,25 +26,37 @@ private:
|
||||
Material * material =nullptr;
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
|
||||
Material * axis_material =nullptr;
|
||||
MaterialInstance * axis_mi =nullptr;
|
||||
|
||||
PipelineData * pipeline_data =nullptr;
|
||||
Pipeline * pipeline_line =nullptr;
|
||||
Pipeline * axis_pipeline =nullptr;
|
||||
Pipeline * pipeline_solid =nullptr;
|
||||
|
||||
GPUBuffer * ubo_color =nullptr;
|
||||
GPUBuffer * ubo_color =nullptr;
|
||||
|
||||
Renderable *ro_plane_grid,
|
||||
*ro_cube,
|
||||
*ro_sphere,
|
||||
*ro_dome,
|
||||
*ro_torus,
|
||||
*ro_cylinder,
|
||||
*ro_cone;
|
||||
Renderable *ro_axis,
|
||||
*ro_cube,
|
||||
*ro_sphere,
|
||||
*ro_dome,
|
||||
*ro_torus,
|
||||
*ro_cylinder,
|
||||
*ro_cone;
|
||||
|
||||
private:
|
||||
|
||||
bool InitMaterial()
|
||||
{
|
||||
material=db->CreateMaterial(OS_TEXT("res/material/VertexColor3D"));
|
||||
axis_material=db->CreateMaterial(OS_TEXT("res/material/VertexColor3D"));
|
||||
if(!axis_material)return(false);
|
||||
|
||||
axis_mi=db->CreateMaterialInstance(axis_material);
|
||||
if(!axis_mi)return(false);
|
||||
|
||||
axis_pipeline=CreatePipeline(axis_material,InlinePipeline::Solid3D,Prim::Lines);
|
||||
if(!axis_pipeline)return(false);
|
||||
|
||||
material=db->CreateMaterial(OS_TEXT("res/material/DebugVertexNormal"));
|
||||
if(!material)return(false);
|
||||
|
||||
material_instance=db->CreateMaterialInstance(material);
|
||||
@ -53,8 +65,6 @@ private:
|
||||
pipeline_data=GetPipelineData(InlinePipeline::Solid3D);
|
||||
if(!pipeline_data)return(false);
|
||||
|
||||
pipeline_line=CreatePipeline(material,pipeline_data,Prim::Lines);
|
||||
if(!pipeline_line)return(false);
|
||||
|
||||
pipeline_solid=CreatePipeline(material,pipeline_data,Prim::Triangles);
|
||||
if(!pipeline_solid)return(false);
|
||||
@ -65,23 +75,11 @@ private:
|
||||
void CreateRenderObject()
|
||||
{
|
||||
{
|
||||
struct PlaneGridCreateInfo pgci;
|
||||
struct AxisCreateInfo aci;
|
||||
|
||||
pgci.coord[0].Set(-100,-100,0);
|
||||
pgci.coord[1].Set( 100,-100,0);
|
||||
pgci.coord[2].Set( 100, 100,0);
|
||||
pgci.coord[3].Set(-100, 100,0);
|
||||
aci.size=200;
|
||||
|
||||
pgci.step.u=20;
|
||||
pgci.step.v=20;
|
||||
|
||||
pgci.side_step.u=10;
|
||||
pgci.side_step.v=10;
|
||||
|
||||
pgci.color.Set(0.5,0,0,1);
|
||||
pgci.side_color.Set(1,0,0,1);
|
||||
|
||||
ro_plane_grid=CreateRenderablePlaneGrid(db,material,&pgci);
|
||||
ro_axis=CreateRenderableAxis(db,axis_material,&aci);
|
||||
}
|
||||
|
||||
{
|
||||
@ -152,6 +150,11 @@ private:
|
||||
return(false);
|
||||
|
||||
material_instance->Update();
|
||||
|
||||
if(!axis_mi->BindUBO("world",GetCameraMatrixBuffer()))
|
||||
return(false);
|
||||
|
||||
axis_mi->Update();
|
||||
return(true);
|
||||
}
|
||||
|
||||
@ -171,7 +174,7 @@ private:
|
||||
|
||||
bool InitScene()
|
||||
{
|
||||
Add(ro_plane_grid,pipeline_line);
|
||||
render_root.Add(db->CreateRenderableInstance(ro_axis,axis_mi,axis_pipeline));
|
||||
// Add(ro_dome,pipeline_solid);
|
||||
Add(ro_torus ,pipeline_solid);
|
||||
Add(ro_cube ,pipeline_solid,translate(-10, 0, 5)*scale(10,10,10));
|
||||
|
@ -29,7 +29,7 @@ class TestApp:public CameraAppFramework
|
||||
|
||||
struct:public RenderObject
|
||||
{
|
||||
Sampler * sampler =nullptr;
|
||||
Sampler * sampler =nullptr;
|
||||
|
||||
Pipeline * pipeline =nullptr;
|
||||
RenderableInstance *renderable_instance =nullptr;
|
||||
|
@ -193,37 +193,18 @@ namespace hgl
|
||||
|
||||
struct AxisCreateInfo
|
||||
{
|
||||
Vector3f root;
|
||||
Vector3f size;
|
||||
float size;
|
||||
Color4f color[3];
|
||||
|
||||
public:
|
||||
|
||||
void RestartColor()
|
||||
AxisCreateInfo()
|
||||
{
|
||||
size=1.0f;
|
||||
color[0].Set(1,0,0,1);
|
||||
color[1].Set(0,1,0,1);
|
||||
color[2].Set(0,0,1,1);
|
||||
}
|
||||
|
||||
void Set(const AABB &box)
|
||||
{
|
||||
root=box.CenterPoint().xyz();
|
||||
size=box.HalfSize().xyz();
|
||||
}
|
||||
|
||||
AxisCreateInfo()
|
||||
{
|
||||
root.Set(0,0,0);
|
||||
size.Set(1,1,1);
|
||||
RestartColor();
|
||||
}
|
||||
|
||||
AxisCreateInfo(const AABB &box)
|
||||
{
|
||||
Set(box);
|
||||
RestartColor();
|
||||
}
|
||||
};//struct AxisCreateInfo
|
||||
|
||||
/**
|
||||
|
@ -1125,6 +1125,8 @@ namespace hgl
|
||||
|
||||
Renderable *CreateRenderableAxis(RenderResource *db,Material *mtl,const AxisCreateInfo *aci)
|
||||
{
|
||||
if(!db||!mtl||!aci)return(nullptr);
|
||||
|
||||
RenderableCreater rc(db,mtl);
|
||||
|
||||
if(!rc.Init(6))
|
||||
@ -1136,14 +1138,14 @@ namespace hgl
|
||||
if(!vertex||!color)
|
||||
return(nullptr);
|
||||
|
||||
vertex->Write(aci->root);color->Write(aci->color[0]);
|
||||
vertex->Write(aci->root.x+aci->size[0],aci->root.y,aci->root.z);color->Write(aci->color[0]);
|
||||
const float s=aci->size;
|
||||
|
||||
vertex->Write(aci->root);color->Write(aci->color[1]);
|
||||
vertex->Write(aci->root.x,aci->root.y+aci->size[1],aci->root.z);color->Write(aci->color[1]);
|
||||
|
||||
vertex->Write(aci->root);color->Write(aci->color[2]);
|
||||
vertex->Write(aci->root.x,aci->root.y,aci->root.z+aci->size[2]);color->Write(aci->color[2]);
|
||||
vertex->Write(0,0,0);color->Write(aci->color[0]);
|
||||
vertex->Write(s,0,0);color->Write(aci->color[0]);
|
||||
vertex->Write(0,0,0);color->Write(aci->color[1]);
|
||||
vertex->Write(0,s,0);color->Write(aci->color[1]);
|
||||
vertex->Write(0,0,0);color->Write(aci->color[2]);
|
||||
vertex->Write(0,0,s);color->Write(aci->color[2]);
|
||||
|
||||
return rc.Finish();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user