Смещение в прототипе означает, что вы отправляете массив INDEX до этого вызова. Это следует использовать, если вы используете VBO (объекты вершинного буфера). Используйте glBindBuffer, чтобы связать буфер индекса и указать смещение, если это необходимоследующий вызов.
Сначала вам нужно связать буфер (индексный буфер здесь), и вы можете указать, откуда ваши элементы начинаются со смещения.
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, g_resources.element_buffer);
glDrawElements(
GL_TRIANGLE_STRIP, /* mode */
4, /* count */
GL_UNSIGNED_SHORT, /* type */
(void*)0 /* element array buffer offset */
);
для
public static void glVertexAttribPointer(
int indx, int size, int type, boolean normalized, int stride, int offset)
Это означает, что вы отправляете буфер вершин перед этим вызовом, и вы можете указать смещение от того, где оно должно быть в буфере.Пожалуйста, проверьте следующую ссылку для получения дополнительной помощи.http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Chapter-2.3:-Rendering.html
Как вы и ожидали, оба имеют одну и ту же причину :). Надеюсь, это поможет!
Обновление: вам нужно создать буфер для его привязки. Это может быть сделаноследующие шаги.
glGenBuffers(); // create a buffer object
glBindBuffer(); // use the buffer
glBufferData(); // allocate memory in the buffer
Проверьте эту ссылку для создания VBO.http://www.opengl.org/wiki/Vertex_Buffer_Object
Относительно типа смещения: смещение передается как указатель, но параметр используется для его целочисленного значения, поэтому мы передаем целочисленное приведение к void *.