问题标签 [vertex-buffer-objects]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
36 浏览

android - Lowest OpenGL ES version to use Vertex Buffer Objects

What is the lowest possible android and opengl es version that i can go and still be able to use vertex buffer objects?

0 投票
1 回答
236 浏览

opengl-es - 在 OpenGL ES 中,多个程序可以使用相同的 VBO 并绑定到它们的属性吗?

我有两个程序要在它们之间切换。我将位置数据加载到 VBO 中,然后为我的第一个程序设置顶点属性数组。当我切换到第二个程序并尝试使用相同的数据设置我的顶点属性数组时,它无法绘制。但是,如果我使用完全相同的代码制作第二个缓冲区,并将其用于第二个程序,它们都画得很好。我想知道是否有人可以澄清在程序之间共享这些 VBO 的规则,因为除非需要它们,否则我宁愿没有两个缓冲区。

0 投票
1 回答
374 浏览

android - Android OpenGL ES 2.0:具有不同定位对象的 VBA 和 VBO

所以我正在做一个有点像 Minecraft 的项目,它有数千个立方体。

我很早就遇到了巨大的性能冲击,因此开始寻找提高 FPS 的方法

我首先看了这个,然后按照推荐的东西Android OpenGL 2.0 Low FPS

我现在正在尝试有关 VBO 的本教程,它的速度非常快。

http://www.learnopengles.com/android-lesson-seven-an-introduction-to-vertex-buffer-objects-vbos/

我猜你每次添加多维数据集时都必须构建 cubePositionData?

VBO 是否适合 Minecraft 之类的东西?

0 投票
2 回答
1346 浏览

c++ - 正确更新顶点缓冲区对象

我有一个用 winapi 编写的培训应用程序所以,我在那里初始化了 GL,我有基于节点的系统,可以用几个类来描述

我还有 2 个全局变量来记录可渲染网格。

现在我正在试验 2 个对象。所以我创建了 2 个类型为 mesh::cube 的节点,其 xy 和 z 段的数量可自定义。我的应用程序的预期行为是让用户在两个节点 CUBE0、CUBE1 之间单击并显示它们的可自定义属性 - 段 x、段 y、段 z。用户调整两个对象的参数,它们以线框模式相互叠加,因此我们可以实时看到它们的拓扑结构的变化。

第一次创建节点时,如果节点类型为mesh,则生成mesh对象,并将mesh_ptr写入mesh_tablemesh_count递增。之后,我的 opengl 窗口类为新网格创建一个唯一的顶点缓冲区对象并将其索引存储在mesh_ptr.vbo_index

之后,用户可以调整参数,并且每次参数值更改时,对象的网格信息都会根据新的参数值重新评估,同时仍然是相同的网格实例,之后 VBO 数据由

整个场景由

单个网格的功能是

问题是只有堆栈中的最后一个对象是这样绘制的,而另一个对象的点都在 0 0 0 中,所以在视口中它渲染了一个具有适当参数的立方体和一个立方体作为 DOT 在此处输入图像描述 在此处输入图像描述

问题:我哪里出错了?

0 投票
1 回答
975 浏览

java - LWJGL 在禁用数组缓冲区对象时无法使用偏移量

我看了很多帖子,找不到我的代码有什么问题。我已经绑定了我的 VBO,但是它不起作用并给了我这个错误:

我不明白这里有什么问题。我到处看了看,无法弄清楚这有什么问题。我已经尝试过使用和不使用 glEnable(GL_ARRAY_BUFFER_BINDING);

0 投票
1 回答
957 浏览

c - OpenGL:尝试使用 VBO(顶点缓冲区对象)绘制线条,它不显示

我尝试将我的 openGL 代码从使用显示列表切换到使用 VBO。在代码中,我尝试绘制一个绿色网格地板,它由与 x 轴平行的绿线和与 z 轴平行的绿线组成。但是当程序运行时,地板不显示。而且我找不到哪里出了问题。

这是我的代码初始化地板的 VBO:

这是要显示的代码:

我尝试使用 VBO 绘制一个简单的 GL_QUADS 地板,它可以工作!但是当我尝试绘制绿色网格地板时,它不显示。

告诉我问题出在哪里。

0 投票
0 回答
141 浏览

android - 大型顶点数据缓冲区

我试图通过将顶点数据(位置和纹理坐标)加载到 VBO 中来绘制很多正方形。我的问题是当我尝试加载所有这些顶点时,由于某种原因它会跳过一些正方形,留下一个空白空间。如果我减少正方形的数量,则不会发生此问题。

以下是我尝试设置 VBO 的方法:

这是它的渲染方式:

为简单起见,省略了很多代码,我只展示我认为相关的内容。如果还不够,请告诉我。

编辑:这是我的问题的图像: 在此处输入图像描述

更新:我已将缓冲区分成更小的块并单独渲染它们。以下是结果(使用 MS Paint 编辑):
2x2 块: 在此处输入图像描述

4x4 块 : 4x4在此处输入图像描述

的左下角图块假定为空。假设相邻的块被完全填充。看起来一个缓冲区可以容纳/渲染的顶点数量有一些限制,2x2 为 3,4x4 为 9。(忽略绿色的东西,在不同的缓冲区中)。
1x1 块(每个图块都在它们自己的缓冲区中)渲染一切都很好,但性能会受到很大影响。

0 投票
1 回答
615 浏览

c++ - 如何将对象添加到缓冲区?opengl

在这个程序中,我想绘制多边形。

首先我做了这样的事情:

绘制多边形示例:

这是vbo创建功能

关键是我想将所有创建的对象保存在一个缓冲区中,但我不知道该怎么做。我试图制作一个 VertexArrayID 数组,但它不能正常工作。有什么建议么?

0 投票
1 回答
628 浏览

android - opengl es2:Advantages of using vertex buffer objects(VBO)

I use glVertexAttribPointer to load my vertex data each frame(~242kb) it takes about 8ms.
Will I gain any performance increase by employing VBO?
I think the answer is NO since I still have to load whole data.
The only way it can get performance gain is if glBufferData loads data faster than glVertexAttribPointer
Is this is the case?

0 投票
1 回答
58 浏览

opengl - 支持顶点缓冲区的现代建模格式

是否有任何直接支持顶点缓冲区对象的建模格式?

目前我的游戏引擎一直在使用Wavefront Models,但我一直将它们与即时模式和显示列表一起使用。这可行,但我想将我的整个系统升级到现代 OpenGL,包括着色器。我知道我可以使用即时模式并通过着色器显示列表,但像大多数有抱负的开发人员一样,我希望我的游戏能够做到最好。在问了上面链接的问题后,我很快意识到 Wavefront 模型根本不支持顶点缓冲区。这主要是由于模型的索引方式。为了使用顶点缓冲区对象,顶点、纹理坐标和法线数组都需要长度相等。

我可以通过编写自己的转换器来实现这一点,我已经这样做了。本质上,我展开索引并创建关联的数组。我什至不需要完全使用glDrawElements,我可以使用glDrawArrays,我做得很好。唯一的问题是我实际上是在复制数据;阵列变得庞大(尤其是大型模型),这对我来说似乎是错误的。当然,必须有一种现代方法将模型初始化为顶点缓冲区,而无需完全展开索引。所以我有两个问题。

1. 他们是否有任何支持直接顶点缓冲区对象的现代模型格式/概念?

2. 这已经是行业标准了吗?大多数游戏引擎是否在运行时展开索引(并膨胀数组,也称为解包)以创建游戏世界资产?