GL_ARRAY_BUFFER目标在glBindBuffer中的含义是什么?

lig*_*rek 21 opengl graphics shader opengl-es glsl

我对VBO很困惑,

glGenBuffers(1, &positionBufferObject);
glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject);
Run Code Online (Sandbox Code Playgroud)

除了GL_ARRAY_BUFFER,还有其他目标类型:GL_ATOMIC_COUNTER_BUFFER,GL_COPY_READ_BUFFER ......

但是,Opengl手册没有提到这些目标的含义.我检查了glew.h:

#define GL_ARRAY_BUFFER 0x8892
Run Code Online (Sandbox Code Playgroud)

这是否意味着目标(如GL_ARRAY_BUFFER)是地址?

目标 - GL_ARRAY_BUFFER在glBindBuffer中的含义是什么?

Nic*_*las 48

一般来说

大多数OpenGL对象必须绑定到OpenGL上下文中称为"目标"的位置才能使用它们.目标只不过是绑定对象的上下文中的一个位置.

不同的对象类型(缓冲区,纹理等)具有不同的目标集.一般来说,每个目标都有一个特定的含义:将一个对象绑定到一个目标意味着您希望以目标使用绑定到它的对象的任何方式使用该对象.

将对象绑定到一个目标不会影响对象是否绑定到另一个目标(除非它是一个纹理对象;它们以不同方式处理目标).

有些函数可以修改绑定对象中的对象或查询数据.它们采用了一个目标,它们正在修改/查询的对象已被绑定.

GL_ARRAY_BUFFER

缓冲区对象GL_ARRAY_BUFFER目标表示将该缓冲区对象用于顶点属性数据的意图.但是,单独绑定这个目标并没有做任何事情; 它只是对(或等效函数)的调用,它使用绑定到该目标的任何缓冲区作为该属性的属性数据.glVertexAttribPointer

  • 非常感谢. (2认同)