Talk:Vertex buffer object

Shaders
Why does the example for OpenGL 3.x and 4.x include all of that shader language stuff? This is supposed to be a page about VBO objects, I think that including this extraneous shader stuff is confusing and unnecessary. — Preceding unsigned comment added by 173.13.159.121 (talk) 06:49, 2011 March 17 (UTC)

In modern OpenGL, shaders directly consume the contents of VBOs during render. All the shader noise in this article replaces the call to glVertexPointer. This article contains the most condensed, useful example I have seen yet. --Sam Rodgers (talk) 17:14, 12 April 2011 (UTC)

Why two examples?
The two examples are identical except the usage of shaders, which is not the topc of this article. The second example called "Example usage in C Using OpenGL 3.x and OpenGL 4.x" does not use, as far as I can see, any features specific to OpenGL 3.x or 4.x. --Ahellwig (talk) 16:36, 25 December 2012 (UTC)

The "OpenGL 3.x and OpenGL 4.x" example uses glVertexAttribPointer and glEnableVertexAttribArray instead of glVertexPointer and glEnableClientState (which would be a lot easier to see if it weren't for all the extraneous shader bullshit included). Qartar (talk) 09:24, 1 January 2013 (UTC)

VBO is bound twice?
It seems that the triangle VBO is bound twice, maybe the second call was meant to unbind the triangle buffer by binding the default buffer 0? — Preceding unsigned comment added by 91.19.105.148 (talk) 22:00, 26 September 2014 (UTC)


 * looks like it's just a superfluous call. but it's in both examples, and has the comment "Repeat here incase changed since initialisation". that implies the author thought there could be a race condition with something else modifying the binding between the two calls. i'm not sure if that can actually happen. i'll come back and fix it if i ever find out. 68.2.235.85 (talk) 15:28, 18 November 2015 (UTC)

Example does not work
This purports to be a complete example, however it produces only a blank, black window as output. It should be fixed or made obvious that it is not intended as complete. BadZen (talk) 19:55, 5 October 2015 (UTC)


 * True dat. I did get it running, but it took a lot of error-checking code to track down what to change, because the OpenGL functions are very passive about handling errors (which is a good policy for embedded systems, it allows maximal performance after you've debugged and tested your code thoroughly and removed your error checking). I'm in the middle of other things but at some point i'm going to try to cook it back down to just the proper example code. One thing you can try right off is to change the GLSL #version line in the shader program files. The infolog for the shader compilation step reported that 150 was unsupported on my machine, and setting it to 130 worked for me. The whole list of possible values is given here: https://en.wikipedia.org/wiki/OpenGL_Shading_Language The problem though is that it may be impossible to make a sufficiently modern example that can work for everyone. It might take putting some coding hints in the comments for things most likely to need munging by individual users. 68.2.235.85 (talk) 16:06, 18 November 2015 (UTC)