Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct
Проблемы с QGLBuffer. Не могу реализовать меш и 2д обьект со своими буферами.
-
Привет всем!
Может кто-нибудь объяснить, почему у меня крашится программа, если я проворачиваю все операции с буферами в собственном классе?
Вот мой код.My Class:
@
class Obj2d
{
public:
Obj2d(float x, float y,float vrt, unsigned int svrt, unsigned int ind, unsigned int sind);
private:
QGLBuffer vertexBuffer;
QGLBuffer indexBuffer;
bool prepareBufferObject(QGLBuffer buffer,
QGLBuffer::UsagePattern usagePattern,
const void data,
int dataSize);
unsigned int *indeces;
unsigned int svrt; //Size vertices
unsigned int sind;//indeces
float *verteces;
void bufferinit();
}Obj2d::bufferinit()
{
if(prepareBufferObject(&vertexBuffer, QGLBuffer::StaticDraw, verteces, svrt))
return;
if(prepareBufferObject(&indexBuffer, QGLBuffer::StaticDraw, indeces, sind))
return;
vertexBuffer.bind();
indexBuffer.bind();
}bool Obj2d::prepareBufferObject( QGLBuffer* buffer,
QGLBuffer::UsagePattern usagePattern,
const void* data,
int dataSize )
{
buffer->create();
buffer->setUsagePattern( usagePattern );
if ( !buffer->bind() )
{
qDebug() << "Could not bind buffer object to the context";
return false;
}
buffer->allocate( data, dataSize );
return true;
}@@
//In InitializeGL()
float points[] = {-300.5f, -300.5f, 0.0f, 1.0f,
-300.5f, 300.5f, 0.0f, 1.0f,
300.5f, 300.5f, 0.0f, 1.0f,
300.5f, -300.5f, 0.0f, 1.0f,1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f}; unsigned int indeces[] = {0 , 1, 2, 2, 3 ,0}; quad = new HObj2d(0.0f,0.0f, points, 8*4*sizeof(float), indeces, 3*2*sizeof(unsigned int)); quad->bufferinit();
@
@
//and PaintGL()
glDrawRangeElements(GL_TRIANGLES, 0,4,6, GL_UNSIGNED_INT, 0);//Program crashed
@Буду рад, если кто-нибудь мне покажет свою реализацию меша или 2д обьекта на Qt для OpenGL.