Maya promo video解释 GPU 缓存如何影响用户使应用程序运行得更快。在像 Cinder 这样的框架中,我们在每帧更新时重新绘制我们想要在场景中的所有地理结构,并将其发送到显卡。那么我从程序员的角度来谈谈 GPU 缓存背后的原因是什么?这些技术背后有哪些 OpenGL/DirectX API?如何在 GPU 内存中“缓存”我的网格?
最佳答案
据我所知,OpenGL 或 DirectX 无法直接指定在 GPU 缓存上存储和跟踪什么内容,什么内容不存储。然而,为了充分利用缓存,应该遵循和维护一些方法。其中一些包括:
- 批量,批量,批量。
- 将数据直接上传到 GPU
- 对索引进行排序以最大化网格中的顶点局部性。
- 将状态更改保持在最低限度。
- 将着色器更改保持在最低限度。
- 将纹理变化保持在最低限度。
- 尽可能使用最大纹理压缩。
- 尽可能使用 mipmapping(以最大化纹素采样局部性)
同样重要的是要记住,不存在单个 GPU 缓存。有多个(顶点、纹理等)独立的缓存。
来源:
OpenGL SuperBible - Memory Bandwidth and Vertices
关于opengl - 从 OpenGL/DirectX 程序员的角度来看, "GPU Cache"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23273790/