Я создаю свой собственный игровой движок на C ++ 14 с ядром OpenGL 4.3.
Я следую следующие уроки:
Я также следую за этими книгами:
Обе эти книги работают с OpenGL 4.3, но learnopengl.com учит OpenGL 3.3. Это не проблема, так как я следую OpenGL 3.3 и изменяю всякий раз, когда мои другие ресурсы вводят новый способ.
В настоящее время у меня возникают проблемы с переносом массивов вершин из старого OpenGL 3.3 в новый OpenGL 4.3, как показано в книге Вольфа на стр. 31.
По старому:
gl::EnableVertexAttribArray(0);
gl::BindBuffer(gl::ARRAY_BUFFER, vbo);
gl::VertexAttribPointer(0, 3, gl::FLOAT, false, 0, nullptr);
Новый способ:
gl::EnableVertexAttribArray(0);
gl::BindVertexBuffer(0, vbo, 0, sizeof(GLfloat) * 3);
gl::VertexAttribFormat(0, 3, gl::FLOAT, false, 0);
gl::VertexAttribBinding(0, 0);
Надеюсь, это помогло вам понять, о чем я говорю. Моя настоящая проблема связана с массивами элементов, о которых Вольф не вдавался в подробности. Кроме того, я не могу найти массивы элементов в SuperBible, и индекс вводит в заблуждение (обратите внимание, что я рассматриваю SuperBible как скорее справочную информацию, чем книгу для чтения).
Следуя онлайн-документации, я предпочитаю применить следующий код:
gl::BindBuffer(gl::ELEMENT_ARRAY_BUFFER, ebo);
gl::BufferData(gl::ELEMENT_ARRAY_BUFFER, size, ptr, gl::STATIC_DRAW);
Тем не менее, я не могу видеть свою сетку. Просто интересно, есть ли более новый способ обработки массивов элементов, который я мог упустить из виду?
Ура!
Задача ещё не решена.
Других решений пока нет …