На странице 103 RedGL Redbook они приводят пример (пример 2-17) о том, как использовать buffer_object для рисования чего-либо.
#define BUFFER_OFFSET(bytes) ((GLubyte*) NULL + (bytes))
GLuint buffers[NUM_BUFFERS];
GLfloat vertices[][3] = {
{ -1.0, -1.0, -1.0 },
{ 1.0, -1.0, -1.0 },
{ 1.0, 1.0, -1.0 },
{ -1.0, 1.0, -1.0 },
{ -1.0, -1.0, 1.0 },
{ 1.0, -1.0, 1.0 },
{ 1.0, 1.0, 1.0 },
{ -1.0, 1.0, 1.0 }
};
GLubyte indices[][4] = {
{ 0, 1, 2, 3 },
{ 4, 7, 6, 5 },
{ 0, 4, 5, 1 },
{ 3, 2, 6, 7 },
{ 0, 3, 7, 4 },
{ 1, 5, 6, 2 }
};
glGenBuffers(NUM_BUFFERS, buffers);
//Generate NUM_BUFFERS of buffers and put them in buffers array.
glBindBuffer(GL_ARRAY_BUFFER, buffers[VERTICES]);
//bind buffers
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
//allocate space for buffers
glVertexPointer(3, GL_FLOAT, 0, BUFFER_OFFSET(0));
Здесь мы предполагаем иметь точку на массив дляукажите, в каком массиве мы найдем данные.Тогда это должен быть указатель на некоторый адрес памяти на сервере?
Я просто не понимаю, что BUFFER_OFFSET (0).
Означает ли это, что на сервере всегда есть только один Vertex_Arrayпрограмма выберет этот адрес автоматически?BUFFER_OFFSET (0) просто говорит вам, с чего начать в этом массиве ?????????
glEnableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers[INDICES]);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, BUFFER_OFFSET(0));
То же самое здесь.Предполагается дать адрес по последнему параметру.Но я не вижу, чтобы BUFFER_OFFSET (0) был полезным адресом.