我正在使用核心 OpenGL 4.3 后端的 C++14 构建自己的游戏引擎。
我正在关注以下教程:
我也关注这些书:
- OpenGL超级圣经(第六版)
- OpenGL 4 着色语言食谱(第二版)
这两本书都适用于 OpenGL 4.3,但 learnopengl.com 教授的是 OpenGL 3.3。这不是问题,因为我遵循 OpenGL 3.3,并在我的其他资源引入新方法时进行修改。
我目前在将顶点数组从旧的 OpenGL 3.3 方式移植到新的 OpenGL 4.3 方式时遇到了一些麻烦,如 Wolff 在第 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);
希望这能让您快速了解我在说什么。我真正的问题是关于元素数组,Wolff 没有详细说明。此外,我似乎无法在 SuperBible 中找到元素数组,并且该索引具有误导性(请注意,我将 SuperBible 更多地视为参考而不是阅读书籍)。
根据在线文档,我最好的猜测是我应该应用以下代码:
gl::BindBuffer(gl::ELEMENT_ARRAY_BUFFER, ebo);
gl::BufferData(gl::ELEMENT_ARRAY_BUFFER, size, ptr, gl::STATIC_DRAW);
但是,我似乎看不到我的网格。只是想知道是否有一种更新的方法来处理我可能忽略的元素数组?
干杯!