首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >OpenGL buffers - Stride vs紧凑

OpenGL buffers - Stride vs紧凑
EN

Stack Overflow用户
提问于 2013-07-16 01:37:13
回答 1查看 4.1K关注 0票数 4

对于每个属性,使用跨度顶点缓冲区与整齐的压缩缓冲区的优缺点是什么?我的意思是举个例子:

Stride:xyzrgb xyzrgb xyzrgb

紧凑:xyzxyzxyz rgbrgbrgb

乍一看,使用stride时可以轻松更改大小,但使用glBufferData()重新分配顶点缓冲区时,顶点缓冲区的内容会被删除。

对我来说,使用紧凑模型似乎是最好的,因为位置、颜色和文本坐标可能来自本地内存中的不同数组,并且因为没有步长缓冲区数据函数;在上传之前必须将所有数组复制到交错缓冲区中,或者为每个顶点使用一个glBufferSubData() (我猜这是个糟糕的想法)。

使用交错缓冲区(stride)似乎是一种常见的做法。为什么会这样呢?我有什么遗漏的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-16 03:35:56

我认为使用交错缓冲区是很常见的,因为这更容易创建(涉及的缓冲区更少,更直观),而且应该更快(因为内存访问模式或类似的东西),紧密打包的最大优势是能够只更新需要更新的数据,从而导致更快的更新。大多数OpenGL教程通过绘制静态网格来教授VBO,这些静态网格不需要更新,因此可以从交错数据中受益。

一般的意见似乎是:尽可能多地交错,在需要的时候拆分。

请参阅:How does interleaved vertex submission help performance?

和:Performance gain using interleaved attribute arrays in OpenGL4.0

另请参阅:http://www.opengl.org/wiki/Vertex_Specification_Best_Practices

它直接说明:

“交错属性对渲染性能有多大帮助还不清楚。需要分析数据。由于对齐需要,交错的顶点数据可能会比未交错的数据占用更多空间。”

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17660360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档