• Create Account

# Custom Vertex structure

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.

3 replies to this topic

### #1storm33229  Members   -  Reputation: 125

Like
0Likes
Like

Posted 08 August 2011 - 06:37 PM

I am using OpenGL and C to create a 2D rendering engine. I am learning about VBOs and how to use them for non-immediate mode rendering. I have been reading from: http://www.opengl.org/wiki/Vertex_Buffer_Object

The tutorial suggests the following:

struct MyVertex
{
float x, y, z; //Vertex
float nx, ny, nz; //Normal
float s0, t0; //Texcoord0
float s1, t1; //Texcoord1
float s2, t2; //Texcoord2
};

I do not need the Normal values, and I am unsure how or why there are three texture coordinates for a single vertex.

I think all I should need is Vertex (XYZ), and one Texcoord (s0, t0 <-- still do not know what those mean).

### #2GothSeiDank  Members   -  Reputation: 172

Like
1Likes
Like

Posted 08 August 2011 - 07:26 PM

This is my vertex structure, also for 2D:


struct NLVertexData
{
/// \brief Constructor
NLVertexData()
: x(0), y(0), z(0),
r(1), g(1), b(1), a(1),
s(0), t(0)
{}

/// \brief X
f32 x;

/// \brief Y
f32 y;

/// \brief Z
f32 z;

/// \brief Red
f32 r;

/// \brief Green
f32 g;

/// \brief Blue
f32 b;

/// \brief Alpha
f32 a;

/// \brief s
f32 s;

/// \brief t
f32 t;
};


That makes a size of 36 bytes per Vertex.
That leads to the following Vertex Attribute Set:

	glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(NLVertexData), 0);
glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, sizeof(NLVertexData), (void*)(3*sizeof(float)));
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, sizeof(NLVertexData), (void*)(7*sizeof(float)));


layout(location = 0) in vec3 Vertex;
layout(location = 1) in vec4 Color;
layout(location = 2) in vec2 TextureCoord;


So yes, you need only 1 set of texture-coordinates per Vertex. Don't know why they use it like this in that tutorial.
Why they are called S and T is something I did not figure out after reading 3 Books and an unknown amount of websites regarding the topic .
I just take it as a given naming .

Good Tutorial:

Learning Modern 3D Graphics Programming Through OpenGL
If you say "pls", because it is shorter than "please", I will say "no", because it is shorter than "yes"
http://nightlight2d.de/

### #3V-man  Members   -  Reputation: 813

Like
1Likes
Like

Posted 08 August 2011 - 07:34 PM

I am using OpenGL and C to create a 2D rendering engine. I am learning about VBOs and how to use them for non-immediate mode rendering. I have been reading from: http://www.opengl.or...x_Buffer_Object

The tutorial suggests the following:

struct MyVertex
{
float x, y, z; //Vertex
float nx, ny, nz; //Normal
float s0, t0; //Texcoord0
float s1, t1; //Texcoord1
float s2, t2; //Texcoord2
};

I do not need the Normal values, and I am unsure how or why there are three texture coordinates for a single vertex.

I think all I should need is Vertex (XYZ), and one Texcoord (s0, t0 <-- still do not know what those mean).

Then make your structure like this

struct MyVertex
{
float x, y, z; //Vertex
float s0, t0; //Texcoord0
};

or if you want it to by 32 bytes
struct MyVertex
{
float x, y, z; //Vertex
float s0, t0; //Texcoord0
};

s0 and t0 are texcoords (XY). You can call it whatever you want such as

struct MyVertex
{
float fatso_x, fatso_y, fatso_z; //Vertex
float nipples_x, nipples_y; //Texcoord0
};
Sig: http://glhlib.sourceforge.net
an open source GLU replacement library. Much more modern than GLU.
float matrix[16], inverse_matrix[16];
glhTranslatef2(matrix, 0.0, 0.0, 5.0);
glhScalef2(matrix, 1.0, 1.0, -1.0);
glhQuickInvertMatrixf2(matrix, inverse_matrix);
glUniformMatrix4fv(uniformLocation1, 1, FALSE, matrix);
glUniformMatrix4fv(uniformLocation2, 1, FALSE, inverse_matrix);

### #4storm33229  Members   -  Reputation: 125

Like
0Likes
Like

Posted 08 August 2011 - 08:18 PM

Thank you both for those examples. I about choked on what I was drinking when I read fatso and nipples.

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