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?
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
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
got it!