Jump to content

  • Log In with Google      Sign In   
  • Create Account


#ActualX-Shiryu

Posted 24 January 2013 - 02:27 AM

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:

Untitled.png


#2X-Shiryu

Posted 24 January 2013 - 02:25 AM

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:


#1X-Shiryu

Posted 24 January 2013 - 02:25 AM

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:

 


PARTNERS