SDL 基础知识:纹理与图像
SDL Basics: Textures vs. Images
我正在编写一些代码,使用 SDL2 来显示带有分层移动标记的图像,我想我想使用新的 (?) 2D 硬件加速渲染。据我了解,我必须加载图像并将其转换为纹理——但有什么区别呢?搜索 'image texture 2d sdl' 只会让我得到有关如何加载纹理的教程,我正在寻找更多的背景知识而不是操作方法。
所以,一些问题:
- 什么是纹理与图像?它们不是一回事吗?
- 如果我想要硬件加速渲染,我假设我需要将静态背景图像作为纹理加载是正确的吗?事实上,听起来 所有 位需要是纹理才能工作。
- 说到 OpenGL,SDL 纹理实际上是 OpenGL 纹理吗?
- 我正在为资源有限的单一用途机器(双核 ARM CPU、双核 Mali 400 GPU、4GB RAM:Olimex A20 LIME2)编写主应用程序。我需要做的就是渲染一个 480x800(是的,纵向布局)图像并在其上放置标记。我希望标记有一个不透明层和两个透明层,以大约 15 fps 的速度更新,我预计其中大约有 125 个,顶部。值得我花时间使用 2D 硬件加速还是我应该只用软件来做?
要了解纹理的基础知识,我建议您看一下a simpler library's documentation。此处,术语 pixmap
的使用方式与 SDL 的 texture
相同。本质上,这些已经转换并上传到您的 GPU 内存中,这使得操作速度更快,但处理起来也更复杂。
OpenGL 纹理是另一种野兽,但我们基本上可以说它们是相同的,即显存中的图像。在OpenGL中绑定纹理时,需要将其上传到GPU内存中,有点类似于这种纹理变换。
在 125 个对象上,我认为考虑使用 2D 加速是值得的,尤其是当你必须移动它们时。如果这只是一张静态图片,我想你可以选择常规图片路线。
作为一般规则,我鼓励您尽可能使用 2D 加速(或只是加速,就此而言),即使只是为了电池改进。话虽如此,如果图像是静态的,结果将完全相同,可能只是代码路径略有不同。因此,我想您可以像加载常规图像一样加载静态背景图像而没有任何缺点(请注意,我不是 SDL 专业人员,所以这种混合方法在这里可能行不通,但值得尝试,因为它适用于大多数2D 工具包)。
希望我回答了你所有的问题:)
我正在编写一些代码,使用 SDL2 来显示带有分层移动标记的图像,我想我想使用新的 (?) 2D 硬件加速渲染。据我了解,我必须加载图像并将其转换为纹理——但有什么区别呢?搜索 'image texture 2d sdl' 只会让我得到有关如何加载纹理的教程,我正在寻找更多的背景知识而不是操作方法。
所以,一些问题:
- 什么是纹理与图像?它们不是一回事吗?
- 如果我想要硬件加速渲染,我假设我需要将静态背景图像作为纹理加载是正确的吗?事实上,听起来 所有 位需要是纹理才能工作。
- 说到 OpenGL,SDL 纹理实际上是 OpenGL 纹理吗?
- 我正在为资源有限的单一用途机器(双核 ARM CPU、双核 Mali 400 GPU、4GB RAM:Olimex A20 LIME2)编写主应用程序。我需要做的就是渲染一个 480x800(是的,纵向布局)图像并在其上放置标记。我希望标记有一个不透明层和两个透明层,以大约 15 fps 的速度更新,我预计其中大约有 125 个,顶部。值得我花时间使用 2D 硬件加速还是我应该只用软件来做?
要了解纹理的基础知识,我建议您看一下a simpler library's documentation。此处,术语 pixmap
的使用方式与 SDL 的 texture
相同。本质上,这些已经转换并上传到您的 GPU 内存中,这使得操作速度更快,但处理起来也更复杂。
OpenGL 纹理是另一种野兽,但我们基本上可以说它们是相同的,即显存中的图像。在OpenGL中绑定纹理时,需要将其上传到GPU内存中,有点类似于这种纹理变换。
在 125 个对象上,我认为考虑使用 2D 加速是值得的,尤其是当你必须移动它们时。如果这只是一张静态图片,我想你可以选择常规图片路线。
作为一般规则,我鼓励您尽可能使用 2D 加速(或只是加速,就此而言),即使只是为了电池改进。话虽如此,如果图像是静态的,结果将完全相同,可能只是代码路径略有不同。因此,我想您可以像加载常规图像一样加载静态背景图像而没有任何缺点(请注意,我不是 SDL 专业人员,所以这种混合方法在这里可能行不通,但值得尝试,因为它适用于大多数2D 工具包)。
希望我回答了你所有的问题:)