У меня проблема с QGLBuffer. Я пытаюсь реализовать динамический VBO с QT + OpenGL.
В файле .h
struct CVert {
float x;
float y;
};
...
typedef struct CVert CVert;
CVert* m_data;
QGLBuffer* m_bufferData;
int m_size;
в .cpp
Конструктор.
m_size = numberOfVertex;
m_bufferData = new QGLBuffer(QGLBuffer::VertexBuffer);
m_bufferData->create();
m_bufferData->bind();
m_bufferData->setUsagePattern(QGLBuffer::DynamicDraw);
m_bufferData->allocate(2*sizeof(float)* p_size);
m_data = (CVert*)m_bufferData->map (QGLBuffer::ReadWrite);
При выполнении программы я изменяю некоторые значения m_data
m_data[pos].x = X1
m_data[pos].y = y1
В методе розыгрыша.
glEnableClientState(GL_VERTEX_ARRAY);
if (m_bufferData->bind ()) {
glVertexPointer( 2, GL_FLOAT, 0, (char *) NULL );;
glDrawArrays( GL_LINES, 0,m_size );
glDisableClientState(GL_VERTEX_ARRAY);
}
Но ничто не рисуется.
Я проверил, что m_data не является нулевым, и m_bufferData-> bind () возвращает true.
Что я делаю не так?