【发布时间】:2014-11-04 09:51:02
【问题描述】:
我正在分析我的简单体素化世界渲染器的性能。我想找到一种不同技术的性能限制,一种压力测试。在某些时候,我发现了一些非常奇怪的东西。我为每个块使用不同的 VBO 以块的形式分配几何数据。我正在使用一些编程到引擎中的计数器来帮助我查看数据发生了什么。
所以在这里我试图分配 664 个包含 1 199 824 个体素的块,这些体素是使用 28 795 776 个顶点构建的。
每个顶点由 3 个用于位置的浮点数、3 个用于法线向量的浮点数和 4 个用于 RGBA 颜色的浮点数组成。 Float 显然是 4 字节的大小,因此我计算出整个世界的估计内存大小约为 1098Mb ( vertexcount * 3 * 4 * 2 + vertexCount * 4*4)。
我以惊人的 7 FPS 速度运行了该程序,但它运行良好,看起来也应有尽有。问题是我正在使用带有 1 GB 显存的 GiGabyte GeForce GTX 460 OC2。那么我如何能够分配 VBO 1098Mb 的数据呢?
数据是否在 VRAM 中以某种方式缓存过?
或者我不知道有几 Mb 的保留内存?是我的计数器给我错误结果的唯一解释,还是希望有一些我不知道的东西,但视频内存管理?
【问题讨论】: