我正在使用OpenGL制作体素引擎,我遇到了一些我试图解释的问题。
我在我的世界中每个块使用1个SSBO来存储块信息(Position,block_type)。我的世界的每一块(大约16000块用于中等大小的世界)存储4096个GLuint(4个uint8_t作为GLuint包装)。我的RAM是578 MB,而我的VRAM是480 MB。
我尝试使用TBO(固定大小4096 GLuint而不是根据需要重新缩放)而不是SSBO,我在RAM和我的VRAM 726MB上测试了2000MB。
GPU核心时钟似乎(我无法确定)TBO更稳定。
(使用GPU-Z软件完成基准测试)
我的想法是我在使用TBO时为数据分配固定大小。使用我的SSBO,我将这个大小变量。我是否应该一直喜欢大RAM和VRAM但是稳定,或者更轻的RAM / VRAM但不稳定?
顺便说一下,当我使用SSBO(Buffer performance warning: Buffer object 13006 (bound to GL_SHADER_STORAGE_BUFFER, usage hint is GL_DYNAMIC_DRAW) is being copied/moved from VIDEO memory to SYSTEM HEAP memory.
)
当我尝试调整TBO大小/数据Buffer performance warning: Buffer object 200 (bound to GL_TEXTURE_BUFFER, usage hint is GL_DYNAMIC_DRAW) may be reconfiguredfor better performance. Recent usage of this buffer object has triggered a stall. The driver had to wait for one buffer object operation to complete before it could execute another.