表面和纹理之间的区别(SDL /一般)
任何人都可以用简单的语言向我解释纹理和表面有什么区别? 我看到它在SDL2
用作SDL_Surface
和SDL_Texture
。 SDL_Texture
是从SDL_Surface
创build的, SDL_Surface
又是从图像/位图创build的。 两者都是像素的集合。 但我没有看到他们之间的主要区别(必须做一些与GPU?)
我试图谷歌它,但我发现的所有解释太复杂,不理解他们,而不深入到电脑graphics的东西。
基本上你的假设“必须用GPU做点什么? 是对的。
SDL_Surface
用于软件渲染。 随着软件渲染,正如saloomi2012正确注意到,你正在使用普通的RAM来存储图像数据。 因此,在大多数情况下,您可以直接访问与表面相关的数据缓冲区,修改其内容,即使用CPU,因此是软件名称。
另一方面, SDL_Texture
用于硬件渲染,纹理存储在VRAM中,您无法像使用SDL_Surface
一样直接访问纹理。 渲染操作由GPU加速,在内部使用OpenGL或DirectX(仅在Windows上可用)API,后者又使用您的video硬件,因此使用硬件渲染名称。
毋庸置疑,硬件渲染的速度比软件渲染快几个数量级,应始终被视为主要select。
SDL_Texture
被加载到您的video卡的VRAM中,而不是常规的RAM中。
表面使用你的RAM内存和纹理使用比表面更快的video卡。