Questions tagged «vao»

3
OpenGL顶点数组对象(VAO)中存储什么状态?如何正确使用VAO?
我想知道OpenGL VAO中存储了什么状态。我知道VAO包含与缓冲顶点的顶点规范有关的状态(缓冲区中包含哪些属性,绑定了哪些缓冲区,...)。为了更好地了解VAO的正确用法,我想确切知道它们的状态。 我如何假设应使用VAO 通过简单的示例,我了解到VAO的正确用法如下: 设定 Generate VAO BindVAO ---- Specify vertex attributes ---- Generate VBO's ---- BindVBO's -------- Buffer vertex data in VBO's ---- Unbind VBO's Unbind VAO 渲染图 Bind VAO ---- Draw Unbind VAO 据此,我假设至少顶点缓冲区绑定和顶点属性规范存储在VAO中。但是我不确定这种使用模式如何扩展到(多个)纹理和(多个)着色器程序起作用的情况。是主动着色器程序存储在VAO?并且纹理绑定(及其采样/包装设置)也存储在VAO中吗?同上制服? 因此,我的问题是: OpenGL VAO中存储了什么确切状态?(VBO绑定,属性规范,活动着色器程序,纹理绑定,纹理采样/包装设置,制服...?) 如何在更复杂的渲染设置中正确使用VAO,其中包含(多个)纹理以及相关的采样/包装设置,(多个)着色器程序和均匀性?
25 opengl  vao 

2
OpenGL:是否可以在不指定VBO的情况下使用VAO
在我可以找到的有关VAO(顶点数组对象)的所有教程中,它们都展示了如何通过配置顶点属性和绑定VBO(顶点缓冲区对象)来使用它们。但是我想创建一个VAO,该VAO将与一组固定着色器一起为一组VBO配置,其中每个缓冲区使用相同的数据模式(顶点,uv,颜色等)。因此,我想为将使用一个着色器绘制的多个VBO创建一个VAO。 我在此上找不到任何演示,所以我决定尝试一下。但它不起作用,并在glDrawArray通话中崩溃。似乎VBO没有绑定。这是我正在使用的代码: 渲染: /* Prepare vertex attributes */ glBindVertexArrayOES(vao); /* Upload the buffer to the GPU */ glBindBuffer(GL_ARRAY_BUFFER, pool->next()); glBufferSubData(GL_ARRAY_BUFFER, 0, parts * buffer.stride() * 6, buffer.getBuffer()); /* Draw the triangles */ glDrawArrays(GL_TRIANGLES, 0, parts * 6); glBindVertexArrayOES(0); VAO创作: glBindVertexArrayOES(vao); glEnableVertexAttribArray(ls.position); glVertexAttribPointer(ls.position, 2, GL_FLOAT, GL_FALSE, buffer.stride(), 0); glEnableVertexAttribArray(ls.color); glVertexAttribPointer(ls.color, 3, …
12 opengl  vbo  vao 

2
2D游戏和现代OpenGL
前概念 好的,到目前为止,我收集的是: 不要使用固定的管道(已弃用或将要弃用) vbos存储“对象模型”(主要是n个顶点数据) vaos描述了如何放置数据,以便绘图调用知道每个vbo的哪一部分是关于哪种顶点信息的(一个vao可以引用多个vbo,相反则有点困难) 每个绘制调用还将顶点数据发送到着色器 我如何看待3D(可选) 有了这些信息,我可以看到使用现代OpenGL绘制3D复杂对象的效果如何。您基本上是将一堆对象模型(可能来自Blender或其他类似软件)加载到具有局部坐标的VBO中,然后只需为对象的每个实例提供不同的着色器参数(偏移量)即可绘制到世界空间。 问题/问题 但是,在2D中,问题和优先级完全不同。您不需要绘制很多复杂的对象,也不需要复杂的投影矩阵,并且着色器和着色器要简单得多。 用现代OpenGL频繁(实际上经常,基本上每帧)绘制变化的几何形状的最佳方法是什么? 在下面的段落中,您可以看到一些问题的想法(圆形和矩形问题),可以更好地识别我感兴趣的更改类型。 我的尝试(可选) 因此,我开始考虑如何处理在屏幕上绘制基本的2D几何: 正方形:[(1, 0), (1, 1), (0, 1), (0, 0)]在局部空间中为正方形的几何图形加载VBO,然后为着色器提供正方形的实际宽度以及世界坐标和颜色信息 冷却,看起来很容易。让我们转到一个圆圈: 一个圆圈:三角形风扇。精度(顶点数)多少?对于小圆圈,精度必须较低,对于错误环,精度必须较高。显然,加载1个VBO可能无法满足所有情况。如果由于圆的大小被调整为更大而需要增加精度怎么办? 不太酷。让我们移动到稍微容易一点的矩形: 矩形:嗯。没有“常规矩形几何体”。您只需要一个宽度/高度比例即可,但是,如果尺寸改变,每个矩形可能会有所不同。 如您所见,事情从那里走下坡路。特别是对于复杂的多边形等等。 无代码政策:P 我只需要一个大概的想法,不需要任何代码,尤其是C或C ++代码。就像这样说:“使用此顶点数据创建一个VBO,然后将其绑定,...”。
10 opengl  2d  vbo  vao 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.