在OpenGL中不断将新纹理上传到GPU的开销是多少?

bbo*_*sak 2 opengl 3d graphics performance

将纹理连续上传到GPU(并替换旧的纹理)的开销是多少.我正在开发一个使用OpenGL的新的跨平台3D窗口系统,并计划为每个窗口上传一个Bitmap(包含UI元素).该位图将与GPU同步更新(使用VSync).我想知道这是不是一个好主意,或者如果不断编写位图会导致太多的性能开销.谢谢!

Goz*_*Goz 7

像nVidia的Geforce 460M这样的东西在本地内存上有60GB /秒的带宽.

PCI Express 2.0 x16可以管理8GB /秒.

因此,如果您尝试在PCIe总线上传输过多纹理,则可能会遇到内存带宽问题.它在60Hz时为每帧提供约136兆.未压缩的24位1920x1080大约为6兆.所以,足以说你可以在16x显卡上每帧上传相当多的视频帧.

当然不是那么简单.PCIe开销约为20%.所有绘图命令也必须通过该链接上传.

一般情况下,你应该没问题,不要过度.请记住,在一个帧中上传一个纹理是明智的,直到下一个(甚至更晚),你都不希望使用它.这样,您就不会创建一个瓶颈,在该瓶颈中,渲染停止等待PCIe上载完成.