什么是GL_ARRAY_BUFFER目标glBindBuffer是什么意思?(What does t

2019-08-16 21:03发布

我感到困惑的VBO,

glGenBuffers(1, &positionBufferObject);
glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject);

此外GL_ARRAY_BUFFER,还有其他目标类型:GL_ATOMIC_COUNTER_BUFFER,GL_COPY_READ_BUFFER ...

然而,OpenGL的说明书没有提到什么这些目标的意思。 我查了glew.h:

#define GL_ARRAY_BUFFER 0x8892

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

什么是目标 - GL_ARRAY_BUFFER在glBindBuffer是什么意思?

Answer 1:

一般来说

大多数OpenGL的对象必须绑定到所谓的“目标” OpenGL上下文位置的使用它们。 一个目标无非是在上下文的地方对象绑定更多。

不同的对象类型(缓冲,纹理等)有不同的套目标。 一般来说,每个目标都有特定的含义:一个对象绑定到一个目标意味着,任何你想要的方式目标使用绑定到它的对象来使用该对象英寸

绑定的对象到一个目标,不影响对象是否被绑定到另一个目标(除非它是一个纹理对象;他们区别对待的目标)。

有迹象表明,修改对象或查询数据从绑定对象的功能。 他们把它们修改的对象/查询已绑定的目标。

GL_ARRAY_BUFFER

GL_ARRAY_BUFFER目标缓冲区对象表示对意图用于顶点属性数据缓冲器对象 。 但是,仅仅结合这一目标并不做任何事情; 它的唯一调用glVertexAttribPointer (或等效的功能) ,它使用任何缓冲液绑定到目标该属性的属性数据。



Answer 2:

然而,OpenGL的说明书没有提到什么这些目标的意思。

OpenGL的2.1规格,第38页,第2.9.1节:“顶点数组在缓冲区对象”

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

不,他们只是unsigned int使用,比如s enum秒。



文章来源: What does the GL_ARRAY_BUFFER target mean in glBindBuffer?