C++ opengl рисует только 1 точку вместо сетки

Я решаю некоторые оболочки рисования для моей DLL, которая вычисляет некоторый массив. В этом коде мне нужно его нарисовать, но я не понимаю, почему, когда я связываю его только один раз, он рисует только 1 очко. Но когда я связываю это (как я знаю, я не должен делать это из-за памяти) каждое событие рисования, это рисует мою сетку, как я ожидаю.

Вот начальное состояние bindData.

bool mBindData = true;

а затем в моей функции рисования:

        GLuint vbo;
        if(mBindData){
            mBindData = false;
            glGenBuffers(1, &vbo);

            //getting size of my array of vertexes
            int size = this->mModel->GetVboSize() * sizeof(float);


            glBindBuffer(GL_ARRAY_BUFFER, vbo);
            glBufferData(GL_ARRAY_BUFFER, s2, this->mModel->GetVbo(), GL_STATIC_DRAW);
            glBindBuffer(GL_ARRAY_BUFFER, vbo);
            glEnableVertexAttribArray(0);
            glVertexAttribPointer(
                        0,                  // attribute 0. No particular reason for 0, but must match the layout in the shader.
                        3,                  // size
                        GL_FLOAT,           // type
                        GL_FALSE,           // normalized?
                        0,                  // stride
                        (void*)0            // array buffer offset
                        );
        }
        glDrawArrays(GL_POINTS, 0,this->mModel->GetVboSize()); 

если нет

if(mBindData){}

это работает хорошо. Но, как я уже сказал, я уверен, что это не так.

Я ценю каждый совет, который вы можете дать мне.

Большое спасибо.

РЕДАКТИРОВАТЬ 1: Мой вопрос, почему он рисует только 1 точку вместо NxN сетки точек, когда я связываю VBO только один раз. Что мне не хватает?

1 ответ

Решение

Я прошу прощения за вопрос. Я просто тупой и не прочитал весь компонент QT. Мне пришлось вызвать update() после paintGL(). Теперь это работает.

Другие вопросы по тегам