- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一款基于图 block 的物理游戏,例如 Falling Sand Game。我目前正在为顶点使用静态 VBO,为与每种 block 类型关联的颜色使用动态 VBO。对于这种类型的游戏,颜色 VBO 中的数据变化非常频繁。 (永远改变 block )目前我正在为每个 block 更改调用 glBufferSubDataARB。我发现它可以工作,但它不能很好地扩展分辨率。 (每次增加分辨率都会慢得多)我希望我能得到目前可玩分辨率的两倍。 (256x256)
我应该非常频繁地调用 BufferSubData 还是每帧调用一次 BufferData?我应该放弃 VBO 并使用顶点数组吗?
如何处理不支持 VBO 的显卡?
(注意:每个 block 大于一个像素)
最佳答案
首先,您应该停止使用这两个功能。自 2002 年左右以来,缓冲区对象一直是 OpenGL 的核心功能;没有理由使用它们的扩展形式。您应该使用 glBufferData 和 glBufferSubData,而不是 ARB 版本。
其次,如果你想要高性能的缓冲对象流,tips can be found on the OpenGL wiki .但一般来说,在同一内存上每帧多次调用 glBufferSubData 是没有帮助的。映射缓冲区并直接修改它可能会更好。
对于你的最后一个问题,我会这样说:你为什么要关心?如前所述,缓冲区对象旧。这就像问你应该为只支持 D3D 5.0 的硬件做什么。
忽略它;没有人会关心。
关于java - glBufferData ARB 还是 glBufferSubData ARB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7895328/
我正在制作一个使用 lwjgl 动态呈现文本的系统。我有一个系统设置为自动生成纹理以用于渲染,图像确实有效。这就是问题所在。 我有这段代码来初始化 2 个 VBO 和一个 VAO,它们都设置为能够处理
我正在做一个渲染,我每帧多次调用 glBufferSubData。 这是我在代码中的做法: glBindBuffer(GL_ARRAY_BUFFER,_vboID); //Buffering
当尝试使用 glBufferSubData 访问 GL_ARRAY_BUFFER 到 128 字节缓冲区大小时,访问最多需要 200 微秒。相反,当使用 glBufferData 再次分配整个缓冲区时
我需要用新顶点更新我的网格。我这样创建了 VBO(最初创建时只有一个顶点): public Mesh(float[] vertex, int size) { texture = null;
移植来自 Superbible OpenGL 7th ed 的第 7 章实例渲染示例。并遇到函数 glBufferSubData 的问题 无论我对它做什么,它都不会接受数据。把它变成一个指针,一个字节
我注意到随着缓冲区大小的增加,更新 VBO 中的少量顶点变得非常缓慢。例如,当我更新时,比如说,512*512 缓冲区中的 2 个顶点比我更新整个 256*256 缓冲区时慢得多,尽管更新的数据量
我实际上正在使用 OpenGL 3.3 渲染引擎,确切地说,我正在尝试在我的场景中创建动态数量的灯光。 为此,我正在使用统一缓冲区对象 (UBO),当我尝试传递数据时遇到问题,而 UBO 将在具有不同
你好, 我正在尝试通过调用 glBufferSubData() 来更新 VBO 的一部分。当我从现有影子缓冲区的开头 (0) 更新时,没有问题,因为缓冲区从 0 开始读取。以下将从缓冲区读取 0 到
我正在尝试使用 vao 和 vbo 制作网格类。 首先我创建 vector 来保存要缓冲的数据: std::vector vertices; std::vector normals; std::vec
我正在使用实例化渲染来渲染大片草地,为此我使用了一个由大量 4x4 变换矩阵组成的实例化数组。 我在草叶上使用 LOD 算法,根据它们与相机的距离来确定渲染哪些叶子。为此,我将实例化数组更新为仅包含相
我正在尝试在 OpenGL 3.3 中渲染 Suzanne(来自 Blender),但缓冲区数据似乎不正确。我明白了: https://gyazo.com/ab82f9acb6854a49fccc52
我不太明白为什么这段代码对于 iOS 上的 GPU 很慢,但这段代码在 Windows 上运行良好,没有任何问题。 基本上我正在做的是我有一个大的动态顶点缓冲区(GL_STREAM_DRAW)并且我尝
为了更新我的统一缓冲区对象,我使用 glBufferSubData .使用速度更快吗glBufferSubData或 glMapBuffer与 glUnmapBuffer ? 最佳答案 关于glMap
我想让我的 VBO 移动,我想知道我是否应该使用 glBufferSubData 更新整个 VBO 的值,或者只使用已弃用的 glTranslatef 来移动我的东西. 如果我只是更新 VBO 中的值
似乎 glBufferSubData 在我的 glDrawArrays 调用之间覆盖或以某种方式破坏数据。我在 Windows 7 64 位系统中工作,使用适用于我的 Nvidia GeForce G
我正在开发一款基于图 block 的物理游戏,例如 Falling Sand Game。我目前正在为顶点使用静态 VBO,为与每种 block 类型关联的颜色使用动态 VBO。对于这种类型的游戏,颜色
我目前正在开发一款使用 Java 1.6 和 LWJGL 编写的 2d 自上而下 RPG。我在我的游戏中实现了 VBO 的使用,现在我维护其中两个:一个用于顶点数据,一个用于纹理坐标。 一切正常,只是
一段时间以来,我一直在减少这个段错误,这是我机器上的一个非常小的可重现示例(如下)。我有一种下沉的感觉,这是一个驱动程序错误,但我对 OpenGL 非常不熟悉,所以更有可能我只是做错了什么。 这是正确
我想在创建 VBO 后更新对象的顶点列表。我都看过 glBufferSubData和 glMapBuffer而且它们似乎都在做类似的事情,这意味着我现在不确定该使用哪一个。 我的伪工作流程是: Cre
在 OpenGL Insights 中,它说“OpenGL 驱动程序必须等待,因为使用了 VBO通过上一帧的 glDrawElements。 这让我很困惑。据我所知, glBufferSubData
我是一名优秀的程序员,十分优秀!