VBO Compatability

What’s the differenc ebetween using Vertex Buffer Objects for OpenGL 2.1 and OpenGL 3.1?

Can I use the same method for both core versions?

What’s the differenc ebetween using Vertex Buffer Objects for OpenGL 2.1 and OpenGL 3.1?

Nothing.

The difference is that Nothing is shown on screen :slight_smile:

ATI [censored] card

glVertexAttribPointer

and non-fixed pipeline = BLANK SCREEN

Here’s code

glGenBuffers(1, &vbo);

glBindBuffer(GL_ARRAY_BUFFER, vbo);
GLenum glErr = glGetError();
glBufferData(GL_ARRAY_BUFFER, 4 * sizeof(struct VertexLayout), NULL, GL_STATIC_DRAW);
glErr = glGetError();
struct VertexLayout *vertices = (struct VertexLayout *)glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);
glErr = glGetError();
vertices[0].pos[0] = -1; vertices[0].pos[1] = -1; vertices[0].pos[2] = -10; vertices[0].pos[3] = 1;
vertices[0].color[0] = 1; vertices[0].color[1] = 1; vertices[0].color[2] = 1; vertices[0].color[3] = 1;

vertices[1].pos[0] = 1; vertices[1].pos[1] = -1; vertices[1].pos[2] = -10; vertices[1].pos[3] = 1;
vertices[1].color[0] = 1; vertices[1].color[1] = 1; vertices[1].color[2] = 1; vertices[1].color[3] = 1;
vertices[2].pos[0] = 1; vertices[2].pos[1] = 1; vertices[2].pos[2] = -10; vertices[2].pos[3] = 1;
vertices[2].color[0] = 0; vertices[2].color[1] = 1; vertices[2].color[2] = 1; vertices[2].color[3] = 1;
vertices[3].pos[0] = -1; vertices[3].pos[1] = 1; vertices[3].pos[2] = -10; vertices[3].pos[3] = 1;
vertices[3].color[0] = 0; vertices[3].color[1] = 1; vertices[3].color[2] = 1; vertices[3].color[3] = 1;
    
glUnmapBuffer(GL_ARRAY_BUFFER);

glErr = glGetError();
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, sizeof(struct VertexLayout), 0);

glErr = glGetError();
struct VertexLayout v;
unsigned int colorStart = ((char *)&v.color[0] - (char *)&v.pos[0]);
glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, sizeof(struct VertexLayout), (char *)colorStart);

glErr = glGetError();
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glErr = glGetError();

I then call DrawArrays(GL_TRIANGLE_FAN, 0, 4);

The shape renders fine (square) but in white color.

When I change the vertices color attribute it does not change.

The shader works fine, and I verified it with non VBO using glBeing/End and VertexAttrib, the correct color shows.

Am I missing something here?

okay guys, my mistake…it was shader error :smiley:
got it!