glVertexAttribPointer和setAttributeBuffer区别
时间: 2023-11-15 10:43:00 浏览: 30
`glVertexAttribPointer`和`glEnableVertexAttribArray`是OpenGL中用于指定顶点属性数据的函数。而`setAttributeBuffer`是Qt中对OpenGL函数的封装,用于简化对顶点属性的设置过程。
`glVertexAttribPointer`函数用于指定顶点属性的数据格式和存储方式。它的参数包括顶点属性索引、每个顶点属性的大小、数据类型、是否归一化、步长和偏移量等。通过调用`glVertexAttribPointer`函数,我们可以告诉OpenGL如何解释顶点数据。
`glEnableVertexAttribArray`函数用于启用指定的顶点属性数组。在调用`glVertexAttribPointer`之后,我们需要调用`glEnableVertexAttribArray`来启用对应的顶点属性数组,使其在渲染时生效。
而在Qt中,通过使用`QOpenGLBuffer`类的`setAttributeBuffer`函数,可以更方便地设置顶点属性数据。该函数会自动调用`glVertexAttribPointer`和`glEnableVertexAttribArray`,并将相应的参数传递给这两个OpenGL函数。这样,我们就可以直接通过`setAttributeBuffer`函数来设置顶点属性数据,而无需显式调用这两个OpenGL函数。
总结来说,`glVertexAttribPointer`和`glEnableVertexAttribArray`是OpenGL原生的函数,用于指定顶点属性数据和启用对应的顶点属性数组。而`setAttributeBuffer`是Qt对这两个函数的封装,提供了更方便的接口来设置顶点属性数据。