是否有一种方法可以不使用OpenGL进行抗锯齿(例如预先修改图形或可能没有发现的某些功能)?如果没有,那么将SDL编写的游戏转换为使用OpenGL会有多难(我以前没有使用过OpenGL...)?
一个老问题,但我也有同样的疑问。让我回答一些未被解决的部分。
“有没有办法在没有OpenGL的情况下进行反锯齿处理(例如事先修改图形或可能找不到的某些功能)?如果没有,将SDL编写的游戏转换为使用OpenGL有多难(我以前没有使用过OpenGL……)”
1)我喜欢http://lazyfoo.net/上的OpenGL和SDL教程。
逐步介绍了代码环境和库的设置,重点是游戏编程。更多的库经验应该能够澄清这个问题的后半部分。
2)我认为人们回答了一个略微不同于您所问的问题。
对于字体,SDL创建具有平滑边缘的Surface。AA是静态的,但结果不像ColorKey那样是(1 XOR 0)。
听起来你只是想用图片做同样的事情。
注意事项:
I) 过滤器可以更加高效。例如,我们可以检测并丢弃总和的零项,并通过重写总和(卷积)来收集相加的项。
II) 如果我们可以按照规则给出透明度掩码,我们可以更快地工作。这对于字体来说就是这种情况,它们是通过边缘定义的。任意图像都有一个任意的掩码。使用相同的技术会太慢。SDL提供执行AA字体的原因与其不提供对图像执行AA的原因相同。:)
III) 图像中有很多像素,并且所有这些处理都可以使用良好的过滤器在图像编辑器中预先完成。
IV) 过滤器也可以同时处理所有像素,将四个通道作为(同时的)向量分量。(因此使用GPU)
对我来说,最后两点是关键。SDL不是做这件事的好地方。如果边框是静态的,则预先处理它。如果边框在运行时确定,则除了GPU之外的任何地方都无法进行处理,因为速度太慢。
希望这有用!(我总是在寻找修正)。
在SDL中,您无法动态抗锯齿图形,因为它不会动态转换精灵。
如果您希望您的精灵具有抗锯齿效果,则应在图像编辑器中进行处理,并将其保存为支持alpha通道的格式(.png)。