Jump to content

  • Log In with Google      Sign In   
  • Create Account


#ActualKaiserJohan

Posted 12 December 2012 - 07:33 AM

Hello,

I'm not sure I understand how the triangle winding order works. I've been reading http://www.arcsynthesis.org/gltut/Positioning/Tutorial%2004.html but I don't quite understand how it works.

Specifically these lines, where the bolded I do not understand:

No matter what size or shape the triangle is, you can classify the ordering of a triangle in two ways: clockwise or counter-clockwise. That is, if the order of the vertices from 1 to 2 to 3 moves clockwise in a circle, relative to the triangle's center, then the triangle is facing clockwise relative to the viewer. Otherwise, the triangle is counter-clockwise relative to the viewer.





For reference, I'm trying to make a cube using glDrawElements, and I want to know how I should order them and why. Below is a naive attempt:

const float vertexPositions[] =
	    {
		    // front vertices
		    -0.5f, 0.5f, 0.0f,
		    0.5f, 0.5f, 0.0f,
		    0.5f, -0.5f, 0.0f,
		    -0.5f, -0.5f, 0.0f,
		    // back vertices
		    -0.5f, 0.5f, 0.5f,
		    0.5f, 0.5f, 0.5f,
		    0.5f, -0.5f, 0.5f,
		    -0.5f, -0.5f, 0.5f
	    };
	    const GLshort indexData[] =
	    {
		    // back
		    4, 5, 6,
		    7, 4, 5,
		    // right
		    1, 5, 6,
		    2, 1, 6,
		    // left
		    4, 0, 3,
		    7, 4, 3,
		    // top
		    4, 5, 1,
		    0, 4, 1,
		    // bottom
		    7, 6, 2,
		    3, 7, 2,
		    // front
		    0, 1, 2,
		    3, 0, 1
	    };

#2KaiserJohan

Posted 12 December 2012 - 07:32 AM

Hello,

I'm not sure I understand how the triangle winding order. I've been reading http://www.arcsynthesis.org/gltut/Positioning/Tutorial%2004.html but I don't quite understand how it works.

Specifically these lines, where the bolded I do not understand:

No matter what size or shape the triangle is, you can classify the ordering of a triangle in two ways: clockwise or counter-clockwise. That is, if the order of the vertices from 1 to 2 to 3 moves clockwise in a circle, relative to the triangle's center, then the triangle is facing clockwise relative to the viewer. Otherwise, the triangle is counter-clockwise relative to the viewer.





For reference, I'm trying to make a cube using glDrawElements, and I want to know how I should order them and why. Below is a naive attempt:

const float vertexPositions[] =
	    {
		    // front vertices
		    -0.5f, 0.5f, 0.0f,
		    0.5f, 0.5f, 0.0f,
		    0.5f, -0.5f, 0.0f,
		    -0.5f, -0.5f, 0.0f,
		    // back vertices
		    -0.5f, 0.5f, 0.5f,
		    0.5f, 0.5f, 0.5f,
		    0.5f, -0.5f, 0.5f,
		    -0.5f, -0.5f, 0.5f
	    };
	    const GLshort indexData[] =
	    {
		    // back
		    4, 5, 6,
		    7, 4, 5,
		    // right
		    1, 5, 6,
		    2, 1, 6,
		    // left
		    4, 0, 3,
		    7, 4, 3,
		    // top
		    4, 5, 1,
		    0, 4, 1,
		    // bottom
		    7, 6, 2,
		    3, 7, 2,
		    // front
		    0, 1, 2,
		    3, 0, 1
	    };

#1KaiserJohan

Posted 12 December 2012 - 07:32 AM

Hello,

I'm not sure I understand what the triangle winding order. I've been reading http://www.arcsynthesis.org/gltut/Positioning/Tutorial%2004.html but I don't quite understand how it works.

Specifically these lines, where the bolded I do not understand:

No matter what size or shape the triangle is, you can classify the ordering of a triangle in two ways: clockwise or counter-clockwise. That is, if the order of the vertices from 1 to 2 to 3 moves clockwise in a circle, relative to the triangle's center, then the triangle is facing clockwise relative to the viewer. Otherwise, the triangle is counter-clockwise relative to the viewer.





For reference, I'm trying to make a cube using glDrawElements, and I want to know how I should order them and why. Below is a naive attempt:

const float vertexPositions[] =
	    {
		    // front vertices
		    -0.5f, 0.5f, 0.0f,
		    0.5f, 0.5f, 0.0f,
		    0.5f, -0.5f, 0.0f,
		    -0.5f, -0.5f, 0.0f,
		    // back vertices
		    -0.5f, 0.5f, 0.5f,
		    0.5f, 0.5f, 0.5f,
		    0.5f, -0.5f, 0.5f,
		    -0.5f, -0.5f, 0.5f
	    };
	    const GLshort indexData[] =
	    {
		    // back
		    4, 5, 6,
		    7, 4, 5,
		    // right
		    1, 5, 6,
		    2, 1, 6,
		    // left
		    4, 0, 3,
		    7, 4, 3,
		    // top
		    4, 5, 1,
		    0, 4, 1,
		    // bottom
		    7, 6, 2,
		    3, 7, 2,
		    // front
		    0, 1, 2,
		    3, 0, 1
	    };

PARTNERS