Для использования VBO необходимо также объявить и инициализировать указатели на необходимые функции. Варианты следующие:
A) Решение проблемы "в лоб" на Win
(исключительно для примера):
C++ (Qt)
#include <GL/glext.h>
PFNGLBINDBUFFERPROC glBindBuffer;
PFNGLBUFFERDATAPROC glBufferData;
PFNGLBUFFERSUBDATAPROC glBufferSubData;
PFNGLDELETEBUFFERSPROC glDeleteBuffers;
PFNGLGENBUFFERSPROC glGenBuffers;
PFNGLMAPBUFFERPROC glMapBuffer;
PFNGLUNMAPBUFFERPROC glUnmapBuffer;
//...
glBindBuffer = wglGetProcAddress("glBindBuffer");
glBufferData = wglGetProcAddress("glBufferData");
glBufferSubData = wglGetProcAddress("glBufferSubData");
glDeleteBuffers = wglGetProcAddress("glDeleteBuffers");
glGenBuffers = wglGetProcAddress("glGenBuffers");
glMapBuffer = wglGetProcAddress("glMapBuffer");
glUnmapBuffer = wglGetProcAddress("glUnmapBuffer");
B) Кроссплатформенное и удобное решение - библиотека
GLEW. Не надо ничего самому объявлять и инициализировать - просто вызываем
glewInit().
C) Qt-only вариант - вместо этих функций используем класс
QGLBuffer.