привязка и отвязка array object (openGL)

286
07 января 2018, 07:01

Изучал код ,рисующий треугольник(с известного learnopengl) меня интересует вот такой момент

GLuint VBO, VAO;
glGenVertexArrays(1, &VAO);
glGenBuffers(1, &VBO);
glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (GLvoid*)0);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, 0)

где verticles-массив вершин треугольника

Сие действо происходит вне игрового цикла, потом мы анбиндим VAO c помощью

glBindVertexArray(0)

В игровом же цикле мы снова вызываем эту функцию,и снова отвязываемся

    glBindVertexArray(VAO);
    glDrawArrays(GL_TRIANGLES, 0, 3);
    glBindVertexArray(0);

Зачем тогда нужно вообще объявление VAO,если по-идее нам достаточно массива с вершинами и выделенного под него буфера?По-сути в коде VAO используется только в вызовах glBindVertexArray,никакой информации туда мы не передаем.В описании указано,что VAO хранит вершинные атрибуты,но как они туда передаются,если я нигде в явном виде этого не делаю?Что вообще значит эта привязка VAO?Когда мы биндим ноль, данные из VAO никуда не деваются?

READ ALSO
Сравнение итераторов STL

Сравнение итераторов STL

Вопрос: почему в цикле while проверка на равенство работает некорректноДобавление условия if исправляет ситуацию ?

307
Как обучится этому? [требует правки]

Как обучится этому? [требует правки]

Ребят я начал углубляться в программирование,но увы есть много проблем с обучением1

302
Чтение чисел из файла с++ [требует правки]

Чтение чисел из файла с++ [требует правки]

Есть файл в нем числаВывести все числа удалив из них повторяющиеся цифры

294
Связный список С++

Связный список С++

Написал код создания, заполнения и вывода элементов связного списка:

300