VBO ничего не рисует

Я пытаюсь нарисовать квадрат с VBO в моем родном приложении Blackberry 10. Моя реализация

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_TEXTURE_2D);
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glGenBuffers(1,&decompressTileImage->VBOId);
    glBindBuffer(GL_ARRAY_BUFFER,decompressTileImage->VBOId);
    glBufferData(GL_ARRAY_BUFFER,sizeof(tileCoordList)+sizeof(tileTextureCoordList),0,GL_STATIC_DRAW);
    glBufferSubData(GL_ARRAY_BUFFER,0,sizeof(tileCoordList),tileCoordList);
    glBufferSubData(GL_ARRAY_BUFFER,sizeof(tileCoordList),sizeof(tileTextureCoordList),tileTextureCoordList);

    glTexCoordPointer(3, GL_FLOAT, sizeof(tileTextureCoordList), (void*)sizeof(this->tileCoordList));
    glVertexPointer(3, GL_FLOAT, sizeof(tileCoordList), 0);

    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
    glDisable(GL_BLEND);
    glDisableClientState(GL_VERTEX_ARRAY);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisable(GL_TEXTURE_2D);

    swapBuffers();

Здесь tileCoordList содержит координаты для квадрата, а tileTextureCoordList содержит соответствующую текстуру.tileCoordList этоSquare3D структура типа.4

typedef struct
{
 Vertex3D lowerLeft;
 Vertex3D lowerRight;
 Vertex3D upperLeft;
 Vertex3D upperRight;
}Square3D;

typedef struct
{
GLfloat x;
GLfloat y;
GLfloat z;
} Vertex3D;

Vertex3D представляет квадрат в tileCoordList. То же самое касаетсяtileTextureCoordList, Я могу хорошо рисовать без VBO, хотя. Я использую opengl-es 1.1

Другой вопрос.

Если я создам два VBO. Предположим, я связал первый с его идентификатором, скопировал данные и нарисовал его. А потом приходит второй, и я также связываю его, копирую данные и рисую. Теперь, если я хочу снова нарисовать первый, нужно ли связывать его снова? Если мне нужно снова связать, нужно ли мне снова копировать данные в буфер для этого VBO?

Ответы на вопрос(2)

Ваш ответ на вопрос