首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SDL2 /表面/纹理/渲染

SDL2 /表面/纹理/渲染
EN

Stack Overflow用户
提问于 2013-12-26 21:09:38
回答 1查看 13.3K关注 0票数 16

我在努力学习SDL2。旧的SDL2和旧的SDL的主要区别是,旧的SDL有窗口,所有的图像都是曲面,所有的图像操作和blits都是面对面的。在SDL2中,我们有表面和纹理。如果我做对了,表面在RAM中,纹理在图形内存中。是那么回事吗?

我的目标是为SDL2制作面向对象的包装器,因为我对SDL也有类似的功能。我想有类窗口和类图片(有私人纹理和表面)。窗口将由图片类的实例表示它的内容,并且所有的blits都是图片对象blits。如何组织这些图片操作:

  1. 像素操作应该在表面水平上?
  2. 如果我想将一幅图片的一部分复制到另一幅而不渲染它,它应该在表面水平上?
  3. 当我想要在屏幕上渲染它时,我是否应该把它表面渲染成纹理呢?
  4. 把所有图片渲染到一个表面,然后将其呈现到窗口纹理中,还是将每幅图片分别呈现到窗口纹理中,这样做更好吗?

一般来说,什么时候我应该使用表面,什么时候我应该使用纹理?

谢谢您的时间,欢迎您的帮助和建议:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-02 17:01:14

首先,我需要澄清一些误解:基于纹理的渲染不像以前的表面渲染那样工作。虽然您可以使用SDL_Surface作为源或目标,但SDL_Texture是用作呈现的源,而免费的SDL_Renderer则用作目标。通常,您必须在完全在CPU上完成的旧呈现框架和用于GPU的新渲染框架之间进行选择,但是混合是可能的。

所以对于你们的问题:

  1. 纹理不提供对像素的直接访问,所以最好在表面上这样做。
  2. 视情况而定。如果纹理不是很常见的话,复制纹理并不会有什么害处,而且您希望稍后将它呈现为加速。
  3. 当谈到纹理时,您总是会呈现给SDL_Renderer,并且总是更好地在纹理上预加载表面。
  4. 正如我在第一段中所解释的,没有窗口纹理。您可以使用完全基于表面的渲染或完全基于纹理的渲染。如果你真的需要两者(如果你想有直接的像素访问和加速渲染),最好照你说的做:把所有的东西都冲到一个表面,然后上传到一个纹理中。

最后,你应该尽可能地使用纹理。表面使用是一个例外,当您不得不使用密集的像素操作或必须处理遗留代码时,请使用它。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20791295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档