144得票5回答
什么是顶点数组对象?

我今天刚开始学习OpenGL,参考了这个教程:http://openglbook.com/the-book/ 我已经学到第二章,绘制了一个三角形,但是我不理解VAOs(这个缩写是否正确?)。教程中有以下代码:glGenVertexArrays(1, &VaoId); glBindVer...

48得票2回答
使用std::vector的VBOs

我用C++和OpenGL编写了一个模型加载器。我使用std::vector来存储我的顶点数据,但现在我想将其传递给glBufferData(),然而数据类型差别很大。我想知道是否有一种方法可以在std::vector和文档中记录的const GLvoid *(用于glBufferData())...

48得票2回答
顶点数组对象和顶点缓冲对象的使用

我正在尝试理解如何使用VAO和VBO以及它们之间的关系。假设我想创建一个简单的地形和一个有纹理的立方体,对于这两个对象,我都有三角形顶点数组,而对于立方体,我有一个包含纹理数据的数组。我的问题是:我该如何使用VAOs和VBOs创建和渲染这两个对象? 我需要为每个对象创建一个VAO和一个VB...

38得票5回答
如何在GL_STREAM_DRAW和GL_DYNAMIC_DRAW之间选择?(这是一个关于IT技术的提问标题)

我正在使用OpenGL ES 2.0,但我认为这也与非ES相关:当创建VBO时如何知道要选择什么“用途”? 这个特定的VBO将在完全更新之前被使用1到4次,我不确定我必须选择GL_STREAM_DRAW还是GL_DYNAMIC_DRAW。

36得票5回答
VBO何时比“简单”的OpenGL原语(glBegin())更快?

经过多年听说顶点缓冲对象(Vertex Buffer Objects,VBOs)的使用后,我最近决定进行实验尝试它们的效果(我的项目通常不需要极高的性能表现...) 下面我将描述我的实验情况,但简而言之,我在“简单”直接模式(glBegin()/glEnd())、顶点数组(CPU端)和VBO...

22得票1回答
理解glVertexAttribPointer?

private int vbo; private int ibo; vbo = glGenBuffers(); ibo = glGenBuffers(); glBindBuffer(GL_ARRAY_BUFFER, vbo); glBufferData(GL_ARRAY_BUFFER, U...

19得票1回答
OpenGL:批处理绘制好还是静态VBO更好?

从效率角度(或其他重要角度)来看,哪种方案更可取呢? 情境 一个OpenGL应用程序每帧绘制许多不同位置的线条(60 fps)。假设有10条线。或者有100,000条线。答案会有所不同吗? #1 使用永远不会更改的静态VBO,其中包含一条线的2个顶点 每帧将使用一个glDrawArr...

18得票1回答
在OpenGL中,使用VBO时如何使用偏移量

我的目标是使用相同的VBO但不同的偏移量多次呈现网格。例如://Load VBO glGenBuffers(2, &bufferObjects[0]); glBindBuffer(GL_ARRAY_BUFFER, bufferObjects[VERTEX_DATA]); glBuffe...

17得票2回答
使用顶点缓冲对象处理非常动态的数据在性能方面是否是个好主意?

我有许多粒子,每帧的顶点都会改变。当前使用客户端内存中的顶点数组进行绘制。如果我使用顶点缓冲对象,可以期望什么性能特征? 由于我必须使用多个glBuffersubData来更新粒子顶点,因此我每帧都会将顶点传输到视频内存中(就像使用普通的顶点数组一样),在这种情况下,VBO是否有任何好处? ...

17得票2回答
OpenGL VBO更新数据

我需要绘制一个包含数千个顶点的缓冲区。我使用VBO来存储数据。 我知道我需要多次更新VBO,但每次只更新一小部分。 因此,我想知道最好的方法是什么: 将VBO分成较小的VBO(每个VBO包含大约300个顶点),然后使用1个调用更新单个VBO? 使用一个大的VBO,并使用大量的glBuf...