• Create Account

Banner advertising on our site currently available from just \$5!

Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

9 replies to this topic

### #1Naruto-kun  Members   -  Reputation: 368

Like
0Likes
Like

Posted 23 April 2014 - 12:00 PM

Hi guys

Got a bit of a problem here. I am trying to draw a pentagon shape on my geometry shader but for some reason the final vertex is always ending up co-located with the 2nd vertex after the center. Any ideas?

	v.p = center;
triStream.Append(v);
//top left
v.p = center+float4(-0.07702941f, 0.02502837f, 0, 0);
triStream.Append(v);
//top
v.p = center+float4(0, 0.08099352f, 0, 0);
triStream.Append(v);
//top right
v.p = center+float4(0.07702941f, 0.02502837f, 0, 0);
triStream.Append(v);
//bottom right
v.p = center+float4(0.04760679f, -0.06552513f, 0, 0);
triStream.Append(v);
//bottom left
v.p = center+float4(-0.04760679f, -0.06552513f, 0, 0);
triStream.Append(v);


### #2C0lumbo  Crossbones+   -  Reputation: 2954

Like
2Likes
Like

Posted 24 April 2014 - 01:27 AM

Just a guess, but it looks like maybe your code is intended to produce a triangle fan, but it's actually outputting a triangle strip (with some of the triangles being back faced culled). .

### #3ankhd  Members   -  Reputation: 1648

Like
1Likes
Like

Posted 24 April 2014 - 04:33 AM

Hello there thry this out

RestartStrip()

### #4Naruto-kun  Members   -  Reputation: 368

Like
0Likes
Like

Posted 24 April 2014 - 05:38 AM

Damn....is there no way to draw it without using RestartStrip?

### #5unbird  Crossbones+   -  Reputation: 7135

Like
0Likes
Like

Posted 24 April 2014 - 06:58 AM

Well, if one can draw this...

### #6Naruto-kun  Members   -  Reputation: 368

Like
0Likes
Like

Posted 24 April 2014 - 07:26 AM

Hehe good one. That just helped me figure out how to dump the center vertex. However...this does lead me to question how more complex shapes (eg 36point circles) would be handled...

Edited by Naruto-kun, 24 April 2014 - 07:28 AM.

### #7unbird  Crossbones+   -  Reputation: 7135

Like
0Likes
Like

Posted 24 April 2014 - 08:04 AM

Any convex shape should work. Strips alternate between left and right side. For a circle split vertices at one axis (e.g. x < 0).

May give you "bad" triangulation (very acute triangles), if that is a problem.

### #8Naruto-kun  Members   -  Reputation: 368

Like
0Likes
Like

Posted 24 April 2014 - 09:15 AM

and for a ring of triangles?

### #9unbird  Crossbones+   -  Reputation: 7135

Like
1Likes
Like

Posted 25 April 2014 - 02:45 AM

Sure:
    int n = 20;
float r1 = 0.1;
float r2 = 0.05;
for(int i = 0; i <= n; i++)
{
float a = (float)i / n * 2 * 3.1415926;
float x, y;
sincos(a, x, y);
v.Position = mul(center + r2 * float4(x,y,0,0), WVP);
triStream.Append(v);
v.Position = mul(center + r1 * float4(x,y,0,0), WVP);
triStream.Append(v);
}


### #10Naruto-kun  Members   -  Reputation: 368

Like
0Likes
Like

Posted 25 April 2014 - 04:30 AM

excellent. Thanks a bunch!

Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

PARTNERS