问题标签 [vbo]

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 投票
2 回答
2513 浏览

c - OpenGL 2.1 中的顶点缓冲对象

(我指定 2.1 是因为我的笔记本电脑不会超过那个版本。我可能会在 3.x 之后将着色器引入强制执行?)。

感谢维基百科:http ://en.wikipedia.org/wiki/Vertex_Buffer_Object我开始了解使用 VBO 是多么简单(我仍然不赞成 IBO?)。到目前为止,我所理解的是使用它们的主要原因是由于数据现在存储在视频内存中而获得了性能提升。

我想知道的是我应该如何在实际环境中使用它们。例如,我所看到的都是设置一个 Vertex Buffer Object 并绘制一个三角形或一个立方体等。如果我想绘制 2 个或更多怎么办?我是否为每个要绘制的实体设置一个新的 VBO?或者我是否神奇地附加到我早期设置的一些静态 VBO?

0 投票
1 回答
89 浏览

c - 我应该为精灵创建什么样的顶点?

我正在使用 OpenGL 和 C 创建一个 2D 渲染引擎。我正在学习 VBO 以及如何将它们用于非即时模式渲染。我一直在阅读:http ://www.opengl.org/wiki/Vertex_Buffer_Object

本教程建议以下内容:

我不需要法线值,我不确定单个顶点如何或为什么有三个纹理坐标。

我认为我只需要顶点 (XYZ) 和一个 Texcoord (s0, t0 <-- 仍然不知道这些是什么意思)。

0 投票
4 回答
864 浏览

java - 使用 VBO 的 JOGL 可能存在内存泄漏

我们目前正在开发一个应用程序,它可以在 4D 的球体/平面上可视化巨大的矢量场(> 250'000)。为了加快这个过程,我们对顶点、法线和颜色使用 VBO。为了在发送到 GPU 之前准备数据,我们使用缓冲区(FloatBuffer、ByteBuffer 等)。

柱面的一些数据:每个柱面使用 16 * 9 + 16 * 3 = 192 个浮点数 -> 192 * 4 字节 = 768 字节。

在发送了顶点之后,我们正在进行以下清理:

我们使用 JConsole 对其进行了监控,我们发现 GarbageCollector 没有“正确”运行。即使我们关闭柱面计数,内存也不会被释放。在 JConsole 监控工具中有一个运行 GC 的按钮,如果我们手动执行此操作,它会释放内存(如果我们加载了大量的柱面并减少了很多,有时超过 600mb 会被 GC 清理)。

这是 JConsole 的图像: JConsole 输出,按下执行 GC 按钮后,内存确实得到了清理

现在的问题是我们如何在代码中自己清理这个 Buffers?调用 clear 方法并将引用设置为 null 是不够的。我们也尝试调用System.gc()但没有任何效果。你有什么主意吗?

0 投票
3 回答
1616 浏览

c++ - 使用 VBO 渲染顶点的问题 - OpenGL

我正在将我的顶点数组函数转移到 VBO 以提高我的应用程序的速度。

这是我原来的工作顶点数组渲染函数:

工作得很好!

现在我将它们移动到 VBO 中,我的程序实际上导致我的显卡停止响应。我的顶点和索引上的设置完全相同。

新设置:

vboId 在 bsp.h 中设置如下: GLuint vboId[2];

当我只运行 createVBO() 函数时,我没有收到任何错误!

以及 VBOS 的渲染代码。我很确定它在这里。只想像在顶点数组中那样渲染 VBO 中的内容。

使成为:

不知道错误是什么,但我很确定我的渲染功能有误。希望有一个更统一的教程,因为网上有很多,但他们经常互相矛盾。

0 投票
2 回答
571 浏览

java - 如何将元素映射到 OpenGL VBO 中的颜色?

我正在使用 VBO 创建一个应用程序来渲染一些颜色结构困难的对象。我注意到,VBO 定义元素的颜色等于元素缓冲区中的最后一个顶点索引。例如,当我像这样使用点数组时

颜色数组:

和元素数组:

绘制一个三角形,它将是红色的(因为 elementBuf 中的最后一个元素是 2,在 colorBuf 中它匹配红色)。

事实上,它会导致额外的内存使用来正确绘制所有内容。

有没有其他可能的方式将颜色与元素联系起来?

0 投票
2 回答
538 浏览

c - 用于 tilemap 的 VBO(绘制顺序和倾斜的 2D 天线)

我想在使用 GL 加速图形的游戏(ANSI C、C99 由于 Windows 兼容性而无法使用)中绘制瓷砖地图,尽管该游戏是使用纹理四边形的自上而下的 2D 透视图。处理时间图的流行观点似乎是使用我即将编写的 GL 顶点缓冲区对象。然而,我意识到我想要一些瓷砖超出垂直界限,假装倾斜的鸟瞰图。这将使块正上方的任何东西都被瓷砖部分覆盖。如果我在这里使用 VBO,我需要一次绘制整个瓷砖地图。这意味着我之后绘制的任何对象都将直接位于图块地图的顶部。

解决这个问题的最明智的方法是什么?我应该先绘制瓷砖地图,然后是实体(玩家/敌人),然后是多余的垂直空间,以便它们覆盖实体,最后是在两者上显示的效果?(例如射击、爆炸等)。但这会给我带来射击没有被地形覆盖的问题,如果我改变顺序,地形会笨拙地覆盖大爆炸。或者,我可以对所有视觉对象进行排序并以自上而下的方式绘制它们,但这意味着我需要经常更改纹理,因为在这种特定情况下按纹理排序并没有太大帮助。

同样,我希望能够以动态方式修改网格中每个单独顶点的颜色,以便实体可以将颜色投射到地图中。据我了解,实现这一点的方法是使用顶点着色器。这个对吗?

编辑:最后一件事。如果我通过平移绘制一个比屏幕大的瓦片地图的 VBO,GL 是否会自动剔除视线之外的面孔,还是每次移动“相机”时都需要重新调整 VBO?

0 投票
2 回答
489 浏览

c - 无法在 OpenGL 中显示 VBO

我在 OpenGL 中有一个 VBO 和一个 IBO,但无法正确绘制它们。你能告诉我我在框架显示功能中忘记了什么吗?- struct Point3D 是一个在 (x,y,z) 内有 3 个浮点数的结构。- nbVertex 是 glVertex 数组中的顶点数量。- nbVBOInd 是 VBOInd 数组中的索引数量。

谢谢 !

0 投票
3 回答
4791 浏览

opengl - OpenGL中的顶点限制

我有一个具有数千个顶点的 OpenGL 场景,并希望将它们作为 VBO/IBO 传递。执行 glGetIntegerv(GL_MAX_ELEMENTS_VERTICES, &maxVertices) 命令显示最大顶点数限制为 2048,尽管事实上我有一个最近的视频卡。除此之外,C 中的数组仅限于 int,因此最多 32k 个顶点。

如何解决这些限制以显示我的所有对象?

0 投票
1 回答
472 浏览

c - 无法在 OpenGL 中设置颜色

我有一个 OpenGL 场景,制作为 VBO 和 IBO。我的 VBO 是一系列 3 个浮点数:x、y、z、x、y、z、x、y、z...除此之外,我还有一个由 3 个浮点数组成的颜色数组:r、g、 b,r,g,b,r,g,b...

我的目标是第一个顶点 (x=vertice[0], y=vertice[1], z=vertice[2]) 链接到第一个颜色 (r=color[0], g=color[1], b=颜色[2])。但是,我无法使用以下代码显示颜色:

上面的代码是否有问题,或者我的数组的设置方式有问题?

0 投票
1 回答
779 浏览

iphone - 是否可以在顶点着色器内持续更改 iPhone OpenGL ES 2.0 上的 VBO 值?

我是 Opengl ES 2.0 新手(和 GLSL 新手),如果这是一个明显的问题,请原谅我。

如果我有一个在程序开始时在 CPU 上初始化一次的 VBO,是否可以使用顶点着色器在每帧更新它而不在 cpu 上进行计算,然后将其重新上传到 GPU?我不是指发送制服并基于此操作数据。相反,我的意思是导致 GPU 本身的 VBO 持续变化。

所以我能想到的最简单的例子是每次渲染帧时在顶点着色器中的 gl_Position 的 x、y 和 z 分量上加 1。这意味着如果我只有一个顶点并且它的初始位置在 cpu 上设置为 (0,0,0,1) 那么在 30 帧之后它将是 (30,30,30,1) 。

如果这是可能的,它在代码中会是什么样子?