Image 如何在图像大于最大纹理大小的gfx卡上获得良好性能?

Image 如何在图像大于最大纹理大小的gfx卡上获得良好性能?,image,performance,opengl,sdl-2,frame-rate,Image,Performance,Opengl,Sdl 2,Frame Rate,在工作中,我处理非常大的图像。 我目前通过SDL2进行渲染。 我的机器使用的图形卡上的最大纹理大小是8192x8192。 因为我的数据集比单个纹理中的数据集大,所以在加载图像后,我将图像分割为多个纹理,并平铺它们。 然而,我发现这需要付出非常高昂的代价。仅渲染4个纹理(大约5K×5K(像素)),每个纹理都会完全降低帧速率 传统智慧告诉我,纹理交换越少越好,但有了如此大的图像,我发现自己处于岩石和硬地之间 我考虑过的一件事是,也许如果我把图像压缩成许多小纹理,我可以利用剔除的优势,这将有望是一个净

在工作中,我处理非常大的图像。 我目前通过SDL2进行渲染。 我的机器使用的图形卡上的最大纹理大小是8192x8192。 因为我的数据集比单个纹理中的数据集大,所以在加载图像后,我将图像分割为多个纹理,并平铺它们。 然而,我发现这需要付出非常高昂的代价。仅渲染4个纹理(大约5K×5K(像素)),每个纹理都会完全降低帧速率

传统智慧告诉我,纹理交换越少越好,但有了如此大的图像,我发现自己处于岩石和硬地之间

我考虑过的一件事是,也许如果我把图像压缩成许多小纹理,我可以利用剔除的优势,这将有望是一个净胜利。但这种方法有一个大问题——我需要能够缩小

另一个选择是缩小图像的比例。这似乎很有希望,因为我对图像进行的分析不需要图像提供的高分辨率

我知道OpenGL有mipmapping,但我对OpenGL缺乏经验,并且厌倦了为了一个工作项目而潜入其中。我不知道有什么好方法可以在SDL2的范围内缩小图像的大小,并且由于我正在做的工作的特定原因,在离线(加载之前)缩小图像的大小并不吸引人


在这种情况下,获得最高帧速率的最佳方法是什么?

请查看函数
SDL\u BlitScaled
。Mipmapping的设置工作不多。您使用的GL版本是什么?渲染到的目标分辨率是什么?在您的场景中,我希望纹理填充率/内存带宽是限制因素,而不仅仅是每帧4个纹理开关。如果您想避免这些,您也可以将所有的瓷砖填充到单个阵列纹理中,顺便说一句。但我确实建议在尝试优化之前先进行基准测试/配置。@Beerby SDL_BlitScaled正是我想要的,谢谢@derhass变量,因为窗口的大小是可调整的。我同意!我在概念上认为纹理填充率和纹理切换是一个功能单元。内存带宽无疑是这里的限制因素。我不知道数组纹理,必须查找它,知道它真是太棒了。我觉得SDL_BlitScaled是这个项目的最佳选择,但我真的很高兴你分享了这个建议!