将许多纹理渲染成一个纹理是一个好主意吗?

我正在用OpenGL制作2D游戏。 为了避免在运行时改变状态机和绑定,我想把我的纹理合并成更大的纹理,

例如,取4个128×128的纹理,制作1个大的512×512。 那么我可以渲染纹理的一部分,而不是绑定一个新的纹理。

这是一个好主意吗? 我的新创建的纹理会丢失吗?还是在这个过程中有重大缺陷?

谢谢

是的,一般来说,这是一个好主意。 OpenGL通常具有透明的丢失机制,也就是说,如果纹理丢失,您将不会注意到它。

已经探索了将多个纹理合并为一个大纹理的想法。 这就是所谓的“纹理图案”。 如果您尝试制作比graphics卡的最大纹理尺寸更大的图集(在现代卡上的尺寸相当大,8Kx8K左右),则会有缺陷。

有纹理图案不会提高性能的病理情况下,但与独立显卡提供>> 512MB的video内存低端卡,我不认为你会遇到任何这些types的问题。 如果您正在开发桌面系统,直到明确需要它们,那么我不会过多地关心性能优化 – 那么这是一个史诗般的标题! ;)