表面和纹理之间的区别(SDL /一般)

任何人都可以用简单的语言向我解释纹理和表面有什么区别? 我看到它在SDL2用作SDL_SurfaceSDL_TextureSDL_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卡。