缩放SDL曲面的正确方法是什么?我在网上找到了一个解释,但它需要逐像素地重新绘制Surface.看起来应该有一些方法可以通过SDL本地执行此操作,而不是像这样重绘图像.我无法在SDL文档中找到任何涉及此内容的内容.通过修改曲面宽度和高度,我可以毫无问题地调整曲面大小,但会剪切生成的曲面.
SDL不支持缩放blitting.根据SDL_BlitSurface的文档:
注意:SDL阻击器(尚未)具有向上或向下缩放blitted表面的能力,就像其他更复杂的blitting机制一样.如果你想缩放图像,你必须为自己找出一些东西(例如使用SDL_gfx).
你可以在这里找到SDL_gfx .编写自己的blitting函数并不是那么糟糕,它可能是一个有趣且有用的学习实验(尽管你将重新发明轮子).使用OpenGL也是一种选择,因为缩放和旋转之类的东西可以在单个函数调用中完成.
我知道这个答案为时已晚,无法帮助提出该问题的人,但是我决定写这篇文章,以帮助那些偶然发现此问题的人。在SDL 2.0中,可以使用该SDL_BlitScaled()
功能将曲面缩放为目标SDL_Rect
。LazyFoo有一个教程对此进行了描述,或查看此文档。