【发布时间】:2020-09-22 21:53:18
【问题描述】:
下面的教程向我展示了以下代码:
...
void update() {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex4f(0, 0, 0, 0);
glVertex4f(1, 0, 0, 0);
glVertex4f(0, 1, 0, 0);
glEnd();
glutSwapBuffers();
}
...
它工作得很好,但我从 OpenTK 的教程中知道,Core 配置文件要好得多,因为它更加灵活和快速。
所以我遵循了另一个使用缓冲区的教程。它显示类似于以下代码:
float data[] = {
0, 0, 0,
1, 0, 0,
0, 1, 0
}
GLuint vao;
void update () {
...
}
void main() {
// glut stuff
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
}
...
问题在于<gl/GL.h>(出于某种原因)没有任何与缓冲区相关的函数定义。我真的不知道为什么会这样,所以我必须下载另一个我不知道的库,还是我错过了什么?
我正在使用 Visual Studio 和默认头文件(如果这很重要的话)。
【问题讨论】:
-
在许多系统上,默认的 OpenGL 头文件只为旧版本 (When do I need to use an OpenGL function loader?) 提供 OpenGL 功能。你需要加载并指向函数。为避免手动执行此操作,有 glad 或 glew 等加载程序