gpt4 book ai didi

c++ - OpenGL 单个 VBO 与多个 VBO

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:46:29 27 4
gpt4 key购买 nike

目前,在我的渲染引擎中,每个网格数据都有一个 VBO(1 个 VBO 用于顶点,1 个 VBO 用于法线,1 个 VBO 用于纹理坐标,1 个 VBO 用于切线,1 个 VBO 用于副切线)并且它们都是与 VAO 结合在一起。

我现在正在考虑更改系统以容纳包含所有网格数据(顶点、法线等)的单个 VBO,但我能从中获得多少 yield ?谈到速度和实用性(因为如果我的网格没有纹理,我可能没有所有数据并且只提供顶点和法线)。

最佳答案

您将设法降低整体内存带宽。如果您的缓冲区对象包含交错在一起的所有属性,那么这意味着您的整个数组对象仅引用一个连续的内存部分。这对于内存子系统来说更容易缓存。这与 CPU 的原理完全相同——本地连续内存访问越多,它们可能越快。

还有一个潜在的危害:一般规则是您应该将元素对齐到元素大小和四个字节中较大者。这会导致一些空间浪费。但好处几乎总是大于坏处。

显然,唯一会受到影响的是 GPU 获取顶点所花费的时间。如果您是曲面 segmentation 或填充边界,您不会立即看到任何改进。

关于c++ - OpenGL 单个 VBO 与多个 VBO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37276090/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com