# [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/][/url]

Edited by X-Shiryu

#### Share this post

##### Share on other sites
mhagain    13430

Why not just use DrawIndexed with triangles instead?  That can replicate any primitive type from earlier versions of D3D.

#### Share this 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/][/url]

Edited by X-Shiryu

#### Share this post

##### Share on other sites
Amr0    2230

Out of curiosity, why not textures?

#### Share this 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]

## 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