Sign in to follow this  
X-Shiryu

[D3D9] Draw Filled Circle avoiding Triangle Fan

Recommended Posts

X-Shiryu    123

I'm implementing some controls for my GUI system, and now its time to do a RadioButton class, whereas I'll not using textures, but pure primitive shapes.

 

Its very simple: what I'll do is render a unfilled external circle and if RadioButton is clicked/checked, will be rendered a filled one inside.

 

Since Triangle Fan is marked as deprecated for D3D10+, can achieve it using Triangle Strips?

Model circle;
float position_x = 50;
float position_y = 350;

float radius_x = 30;
float radius_y = 30;

const int degrees = 360;
const float degrees_to_radians = 3.14159265f / 180.0f;

circle.ResizeVertices(degrees);

//Direct3D Triangle Strip
//circle.SetPrimitiveType(TriangleStrip);

//Direct3D Line Strip
circle.SetPrimitiveType(LineStrip);

circle.SetPrimitiveCount(circle.GetVertexTotal() - 1);

for (int i = 0; i < degrees; i++)
{
    const float rad = i * degrees_to_radians;

    circle.SetVertexPosition(i,position_x + (cos(rad) * radius_x),position_y + (sin(rad) * radius_y));

    circle.SetVertexColor(i,Color::Black);
}
 

Using LineStrip top result and TriangleStrip bottom result:

[url=http://postimage.org/]Untitled.png[/url]

Edited by X-Shiryu

Share this post


Link to post
Share on other sites
X-Shiryu    123

Yeah, i just tried using Triangle List and worked.

 

Using indices like this: 0 1 2   0 2 3   0 3 4  ..., i can simulate a Triangle Fan and fill circle, but uses more indices.

[url=http://postimage.org/image/lp8wt7ex7/]Untitled.jpg[/url]

Edited by X-Shiryu

Share this post


Link to post
Share on other sites
X-Shiryu    123

Because i'm focusing more on functionalities of controls than graphical aspect, but later i can add a sprite and render it textured.

[url=http://postimage.org/][/url]
 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this