Я решаю некоторые оболочки рисования для моей 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){}
это работает хорошо. Но, как я уже сказал, я уверен, что это не так.
Я ценю каждый совет, который вы можете дать мне.
Большое спасибо.
EDIT1: Мой вопрос, почему он рисует только 1 точку вместо NxN сетки точек, когда я связываю VBO только один раз. Что мне не хватает?
Я прошу прощения за вопрос. Я просто тупой и не прочитал весь компонент QT. Мне пришлось вызвать update () после paintGL (). Теперь это работает.
Других решений пока нет …