c - 表面和纹理的区别(SDL/通用)

标签 c graphics sdl sdl-2

谁能用简单的话向我解释纹理和表面之间的区别是什么?我看到它在 SDL2 中用作 SDL_SurfaceSDL_TextureSDL_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/

相关文章:

Haskell SDL 绑定(bind) : Why doesn't SDL draw a circle here?

c - 使用 C 中的隐藏变量和方法进行测试驱动开发

C++:也许你知道这个陷阱?

c - C中双向链表的初始化,指针

java - 2 点之间的道线

java - 如何保留一些图纸而不保留其他图纸?

c# Draw Image (Scaled) to Graphics,插值不正确。修复?

python - 带有 Python 绑定(bind)的 C lib,两者都想要渲染

C 变量声明

c - 如何解释 gcc 与 nmake 的这些差异?