我正在尝试了解 OpenGL 背后的理论,目前正在研究 VBO。
到目前为止我的理解是:当我们声明一系列顶点时,比如说形成一个三角形基元的 3 个顶点,我们基本上不会将它们存储在任何地方,它们只是在代码中声明。
但是,如果我们想将它们存储在某个地方,我们可以使用 VBO 来存储这些顶点的定义。并且,通过同一个 VBO,我们将所有顶点信息发送到顶点着色器(这是一堆代码)。现在,VBO 位于 GPU 中,因此当我们调用 VBO 时,我们基本上将所有信息存储在 GPU 内存中。然后,作为管道渲染过程一部分的顶点着色器“来到”GPU 内存,“查看”VBO 并检索所有信息。换句话说,VBO存储顶点数据(三角形顶点)并将其发送到Vertex Shader。
因此,VBO -> 发送信息到 -> 顶点着色器。
它是否正确?我要求确定这是否是正确的解释,因为我发现自己在屏幕上画三角形,有时画由许多三角形组成的字母,还有一堆代码和函数,我基本上是通过记忆学到的,但并不真正理解什么他们是这样。
分解它:
// here I declare the VBO
unsigned int VBO;
// we have 1 VBO, so we generate an ID for it, and that ID is: GL_ARRAY_BUFFER
glGenBuffers(1, &VBO)
// GL_ARRAY_BUFFER is the VBO's ID, which we are going to bind to the VBO itself
glBindBuffer(GL_ARRAY_BUFFER, VBO)
// bunch of info in here …Run Code Online (Sandbox Code Playgroud)