improve the Circle inline-geometry
This commit is contained in:
parent
2403cfab10
commit
b0b6e48f86
@ -116,15 +116,35 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
RenderableCreater rc(db,mtl);
|
RenderableCreater rc(db,mtl);
|
||||||
|
|
||||||
if(!rc.Init(cci->field_count))
|
uint edge;
|
||||||
return(nullptr);
|
|
||||||
|
if(cci->has_color)
|
||||||
|
{
|
||||||
|
edge=cci->field_count+1;
|
||||||
|
if(!rc.Init(cci->field_count+2))return(nullptr);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
edge=cci->field_count;
|
||||||
|
if(!rc.Init(cci->field_count))return(nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
AutoDelete<VB2f> vertex=rc.CreateVADA<VB2f>(VAN::Position);
|
AutoDelete<VB2f> vertex=rc.CreateVADA<VB2f>(VAN::Position);
|
||||||
|
AutoDelete<VB4f> color=rc.CreateVADA<VB4f>(VAN::Color);
|
||||||
|
|
||||||
if(!vertex)
|
if(!vertex)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
for(uint i=0;i<cci->field_count;i++)
|
if(cci->has_color)
|
||||||
|
{
|
||||||
|
if(!color)
|
||||||
|
return(nullptr);
|
||||||
|
|
||||||
|
vertex->Write(cci->center);
|
||||||
|
color->Write(cci->center_color);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(uint i=0;i<edge;i++)
|
||||||
{
|
{
|
||||||
float ang=float(i)/float(cci->field_count)*360.0f;
|
float ang=float(i)/float(cci->field_count)*360.0f;
|
||||||
|
|
||||||
@ -132,6 +152,9 @@ namespace hgl
|
|||||||
float y=cci->center.y+cos(hgl_ang2rad(ang))*cci->radius.y;
|
float y=cci->center.y+cos(hgl_ang2rad(ang))*cci->radius.y;
|
||||||
|
|
||||||
vertex->Write(x,y);
|
vertex->Write(x,y);
|
||||||
|
|
||||||
|
if(cci->has_color)
|
||||||
|
color->Write(cci->border_color);
|
||||||
}
|
}
|
||||||
|
|
||||||
return rc.Finish();
|
return rc.Finish();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user