我正在编写一个OpenGL应用程序,我现在面临的问题如下:假设我有一个顶点数组,有它的ID。但是,我手头没有它的绑定顶点缓冲区ID。我需要一个操作的缓冲区ID。那么,是否可以从顶点数组中检索当前缓冲区绑定?请注意,我遇到过glGetIntegerv,但我认为它只检索当前缓冲区绑定,而不是顶点数组绑定
glGetIntegerv
fnvucqvd1#
假设我有一个顶点数组,它有ID,但是我手头没有它的绑定顶点缓冲区ID。在运行良好的应用程序中,这是不可能的。是您的应用程序将缓冲区放入 VAO 中。因此,您应该已经知道哪个缓冲区附加到了VAO中。这是一个您不需要问的问题。但是,如果你别无选择,只能问OpenGL一个你应该知道答案的问题,你必须首先把 VAO 绑定到上下文。如果你没有使用separate attribute format API,那么你可以使用glGetVertexAttribiv和GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING,指定你感兴趣的属性索引。如果你想使用单独的属性格式API,您需要将glGetIntegeri_v与GL_VERTEX_BINDING_BUFFER一起使用,指定要查询的绑定索引。如果您使用DSA(它 * 需要 * 使用单独的属性格式),那么您可以使用glGetVertexArrayIndexediv,带有GL_VERTEX_BINDING_BUFFER和适当的绑定索引。
glGetVertexAttribiv
GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
glGetIntegeri_v
GL_VERTEX_BINDING_BUFFER
glGetVertexArrayIndexediv
1条答案
按热度按时间fnvucqvd1#
假设我有一个顶点数组,它有ID,但是我手头没有它的绑定顶点缓冲区ID。
在运行良好的应用程序中,这是不可能的。是您的应用程序将缓冲区放入 VAO 中。因此,您应该已经知道哪个缓冲区附加到了VAO中。这是一个您不需要问的问题。
但是,如果你别无选择,只能问OpenGL一个你应该知道答案的问题,你必须首先把 VAO 绑定到上下文。如果你没有使用separate attribute format API,那么你可以使用
glGetVertexAttribiv
和GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
,指定你感兴趣的属性索引。如果你想使用单独的属性格式API,您需要将glGetIntegeri_v
与GL_VERTEX_BINDING_BUFFER
一起使用,指定要查询的绑定索引。如果您使用DSA(它 * 需要 * 使用单独的属性格式),那么您可以使用
glGetVertexArrayIndexediv
,带有GL_VERTEX_BINDING_BUFFER
和适当的绑定索引。