glBufferData () вне цикла рендеринга не работает - PullRequest
0 голосов
/ 23 июня 2019

У меня есть массив вершин с плавающей точкой, связанный с объектом буфера вершин для рисования куба.В массиве вершин чередуются цвета, связанные с каждой вершиной.

В цикле рендеринга в main() я вызываю функцию каждые n циклов рендеринга для обновления цветов в массиве вершин.Переменная массива с плавающей точкой передается по указателю.Как только цвета обновляются и все еще находятся в функции обновления, я вызываю glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW).Когда это происходит, куб исчезает.

Однако, если функция обновляет только цвета, а затем, после возврата в цикл рендеринга, я вызываю glBufferData(), с теми же параметрами, обновляются цвета куба икуб остается видимым.

Я попытался повторно привязать объект буфера вершин в функции обновления цвета, но это не работает.

Мне кажется, что существует некоторая связь с буфером вершин OpenGLобъект в цикле рендеринга, сам внутри main(), который теряется при вызове glBufferData() во внешней функции.

В цикле рендеринга, который находится в main(), работает код:

if (faceColorLoopCounter > faceColorDuration) {

    faceColorLoopCounter = 0;
    IncrementVertexColors(verticesColorAngles, vertices);

    // Added here to make colors change periodically.
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

}

Функция, в которой цвета меняются, и где я пытался поместить glBufferData(),

void IncrementVertexColors(double* verticesColorAngles, float* vertices) {

    for (int rowIndex = 0; rowIndex < 7; rowIndex++) {

        for (int colIndex = 3; colIndex < 6; colIndex++) {

            IncrementVertexColorComponent(verticesColorAngles[rowIndex * 6 + colIndex], vertices[rowIndex * 6 + colIndex]);
        }
    }

    //glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
}

, где glBufferData() закомментирован, так как он не работаетВот.IncrementVertexColorComponent() меняет один цвет за раз.

Я потерян для объяснения.Чего мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...