用pygame绘制旋转字体
使用 pygame 绘制用字体渲染的旋转文本的最佳方法是什么?我可以先绘制字体,然后rotozoom
它,但如果可以直接绘制旋转的字形,特别是考虑到AA,似乎会得到更好的结果?
What's the best way to draw rotated text rendered with fonts with pygame? I can just draw the font then rotozoom
it, but it seems better result would be gotten if it were possible to draw the glyphs directly rotated, especially taking AA into account?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Pygame 没有您正在寻找的功能。
您必须使用您提到的方法,即在已渲染的字体上使用
rotozoom
。实际上,这种方法的质量并没有那么差。关于速度,无论如何您都不希望一直渲染字体。如果您非常追求速度,并且文本不是动态的,那么您始终可以为要显示的每个文本创建一个缓存,即 32 个方向。 Pyglet 将允许您“免费”旋转精灵,即硬件加速。
或者您可以查看 pygame 使用的原始 SDL 库,看看是否可以找到直接绘制旋转字体的东西并破解 pygame 来使用它。
Pygame does not have the functionality you are looking for.
You will have to use the method you mention, i.e
rotozoom
on an the already rendered font. The quality of this method isn't all that bad actually. And concerning speed, you don't want to be rendering the fonts all the time anyway.If you are desperate for speed, and the text isn't dynamic, you can always make a cache of i.e 32 directions for each text you want displayed. Pyglet will allow you to rotate sprites for "free", i.e hardware accelerated.
Or you can go look at the raw SDL libraries pygame uses and see if you can find something that draws rotated fonts directly and hack pygame to use it.
您可以在 pygame 中使用 pyOpenGL 表面,如果这可以简化您的工作。
Pyglet 也使用 OpenGL。
(对于 pygame 表面)您可以缓存渲染的文本,使用它来旋转。或者预先缓存所有 32 个方向。 [参见其他答案]
You can use a pyOpenGL surface in pygame, if that simplifies it for you.
Pyglet also uses OpenGL.
(for pygame surfaces) You can cache the rendered text, using that to rotate. Or pre-cache all 32 directions. [ see other answer ]