谁能用简单的话向我解释纹理和表面之间的区别是什么?我看到它在 SDL2
中用作 SDL_Surface
和 SDL_Texture
。 SDL_Texture
是从 SDL_Surface
创建的,后者又是从图像/位图创建的。两者都是像素的集合。但我看不出它们之间的主要区别(必须用 GPU 做些什么?)
我试着用谷歌搜索,但我发现所有的解释都太复杂了,如果不深入研究计算机图形学的东西就无法理解。
最佳答案
基本上您的假设“必须对 GPU 做些什么?”是对的。
SDL_Surface
用于软件 渲染。用软件渲染,如saloomi2012正确注意到,您正在使用常规 RAM 来存储图像数据。因此,在大多数情况下,您可以直接访问与表面关联的数据缓冲区,修改其内容,即它正在使用 CPU,因此是软件名称。
SDL_Texture
另一方面,用于硬件 渲染,纹理存储在 VRAM 中,您无法像 那样直接访问它SDL_Surface
。渲染操作由 GPU 加速,在内部使用 OpenGL 或 DirectX(仅在 Windows 上可用)API,这反过来又使用您的视频硬件,因此硬件渲染名称。
不用说,硬件渲染比软件渲染快几个数量级,应始终将其视为主要选项。
关于c - 表面和纹理的区别(SDL/通用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21392755/