任何人都可以用简单的语言向我解释纹理和表面之间的区别是什么?我在SDL2
中看到它用作SDL_Surface
和SDL_Texture
。 SDL_Texture
是从SDL_Surface
创建的,{{1}}又是从图片/位图创建的。两者都是像素集合。但我没有看到它们之间的主要区别(必须用GPU做些什么?)
我试图谷歌,但我发现的所有解释都太复杂了,无法深入了解计算机图形内容。
答案 0 :(得分:66)
基本上你的假设"必须用GPU做些什么?"是对的。
SDL_Surface
用于软件渲染。通过软件渲染,正确地注意到saloomi2012,您使用常规RAM来存储图像数据。因此,在大多数情况下,您可以直接访问与曲面关联的数据缓冲区,修改其内容,即使用CPU,因此使用软件名称。
SDL_Texture
用于硬件渲染,纹理存储在VRAM中,您无法像{{1}一样直接访问它}。渲染操作由GPU加速,在内部使用OpenGL或DirectX(仅在Windows上可用)API,后者又使用您的视频硬件,因此硬件呈现名称。
毋庸置疑,硬件渲染速度比软件渲染快几个数量级,应该始终被视为主要选项。
答案 1 :(得分:7)
SDL_Texture
已加载到视频卡的VRAM中,而不是常规RAM中。
答案 2 :(得分:2)
Surfaces使用你的RAM和纹理使用更快的视频卡 而不是表面。
答案 3 :(得分:0)
有关于此的更多信息:
https://thenumbat.github.io/cpp-course/sdl2/05/05.html
如上一课所述,纹理是GPU渲染 相当于表面。因此,纹理几乎总是从中创建的 表面,使用函数SDL_CreateTextureFromSurface()。这个 功能或多或少做你期望的 - 参数是 渲染上下文和表面来创建纹理。和。一样 其他创建函数,失败时返回NULL。
我希望它可以帮到你!