SDL基础知识:纹理与图像

时间:2016-09-06 13:20:06

标签: c++ opengl arm textures sdl-2

我正在编写一些代码,使用SDL2来显示带有移动标记的图像,我想我想使用新的(?)2D硬件加速渲染。据我了解,我必须加载图像并将其转换为纹理 - 但有什么区别?搜索'image texture 2d sdl'只能获得有关如何加载纹理的教程,我正在寻找更多的背景而不是方法。

所以,有些问题:

  • 纹理与图像有什么关系?他们不是一回事吗?
  • 我是否正确假设我需要将静态背景图像作为纹理加载,如果我想要硬件加速渲染?实际上,听起来像 all 这些位需要纹理才能实现。
  • 说到OpenGL,SDL纹理实际上是OpenGL纹理吗?
  • 我正在为资源有限的单用途机器编写主应用程序(双核ARM CPU,双核Mali 400 GPU,4GB RAM:Olimex A20 LIME2)。我需要做的就是渲染480x800(是的,纵向布局)图像并在其上放置标记。我希望标记有一个不透明和两个透明层,以15 fps左右更新,我预计其中大约125个,顶部。是否值得我使用2D硬件加速,或者我应该在软件中使用它?

1 个答案:

答案 0 :(得分:3)

要了解纹理的基础知识,建议您查看a simpler library's documentation。此处,术语pixmap的使用方式与SDL texture相同。从本质上讲,这些已经转换并上传到GPU的内存中,这使得操作速度提高了一些,但处理起来也更复杂。

OpenGL纹理是另一种野兽,但我们基本上可以说它们是相同的,即视频内存中的图像。在OpenGL中绑定纹理时,需要将其上传到GPU内存,这与此纹理转换有点类似。

对于125个物体,我认为考虑使用2D加速变得值得麻烦,特别是如果你必须移动它们。如果这只是一个静态图像,我想你可以选择常规的图像路径。

作为一般规则,我鼓励您尽可能使用2D加速(或仅加速),如果仅用于电池改进。话虽如此,如果图像是静态的,结果将完全相同,可能只是稍微不同的代码路径。因此,我认为你可以像普通图像一样加载静态背景图像而没有任何缺点(请注意,我不是SDL专业人员,所以这种混合方法可能在这里不起作用,但值得尝试,因为它可以在大多数情况下工作2D工具包)。

我希望我回答你所有问题:)