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.


Log in to reply