我正在尝试学习SDL2。旧SDL和SDL2之间的主要区别(我可以看到)是旧的SDL具有由其表面表示的窗口,所有图片都是表面,所有图像操作和blits是表面到表面。在SDL2中,我们有表面和纹理。如果我做对了,表面在RAM中,纹理在图形内存中。是吗?
我的目标是为SDL2制作面向对象的包装器,因为我对SDL有类似的东西。我想拥有类窗口和类图片(具有私有纹理和表面)。窗口将使其内容由图片类的实例表示,并且所有blits将是图片到图片对象的blits。如何组织这些图片操作:
一般来说,我何时应该使用表面?何时应该使用纹理?
感谢您的时间,欢迎提供所有帮助和建议:)
答案 0 :(得分:13)
首先,我需要澄清一些误解:基于纹理的渲染不像旧的表面渲染那样有效。虽然您可以使用SDL_Surface
作为源或目标,但SDL_Texture
用作渲染源,而免费SDL_Renderer
用作目标。通常,您必须在完全在CPU上完成的旧渲染框架和用于GPU的新渲染框架之间进行选择,但可以进行混合。
所以对你问题:
SDL_Renderer
,并且总是更好地在纹理上预加载曲面。最后,你应该尽可能使用纹理。表面使用是一个例外,当您必须使用密集像素操作或必须处理遗留代码时使用它。