OpenGL:比许多小纹理表面更好或更差的纹理表面更大?

Roo*_*kie 1 opengl textures

我一直在考虑这个问题,如果我切换巨大的纹理,而不是用glBindTexture()切换许多稍微小一些的纹理,它是否会使渲染速度变慢?我有这样的想法,每次使用glBindTexture()时,GPU都会将纹理数据复制到更快的内存位置,所以我认为大纹理也需要更长时间才能复制.

但是,我记得以前使用许多小纹理来创建动画,而且在某些gfx卡上它非常慢,但是当我将动画帧放在单个纹理上时,性能却高得惊人.不过,在这两种情况下,我在其他一些gfx卡上都没有性能问题.

那就是说,我应该总是使用最大可能的纹理表面尺寸吗?(如果我不浪费那么多的空纹理空间.)

dat*_*olf 6

切换纹理很昂贵.通常的瓶颈是缓存压力,但偶尔也会从GPU内存中换出纹理.

然而,只要所讨论的纹理是驻留的,即位于快速GPU存储器上,纹理绑定就是O(1),即与纹理大小无关.所以应该总是尽可能使用尽可能大的纹理.关键字是纹理图集,这些通常是一种提高性能的方法.