8

我有一个程序可以在窗口中显示具有固定帧速率(例如 30 fps)的动画。

目前我使用 SDL,但不幸的是它缺乏桌面集成(如拖放),现在我想改用 GTK。

所以我想做的(假设窗口是双缓冲的):

1 obtain off-screen buffer
2 render my stuff to buffer
3 tell the toolkit to swap buffers
4 update window
5 repeat

除了非常基本的 GDK/GTK 调用之外,我不想使用任何功能来创建和管理窗口并接收输入事件。

常见问题解答中,他们建议使用 GdkRGB。但是,在 GdkRGB 的官方文档中,他们使用了gdk_draw_rgb_image()已弃用的函数,实际上大多数 GdkRGB 函数都是。

作为替代方案,他们建议使用 OpenGL。问题在于它需要一些不常见的库,例如 GtkGLArea,它不是 GTK 的一部分(我不想依赖任何默认情况下未安装的库)。此外,在我的系统上,驱动程序的 OpenGL 支持是......有限的。

我已经研究了 Cairo(它是作为某些已弃用功能的替代方案提供的),但这会为我相对简单的问题添加更多样板代码(并且我怀疑会有额外的开销)。

4

1 回答 1

4

我个人会说 GdkRGB 对你来说是一个合理的选择。它的设计很简单,其范围几乎与您所描述的完全一样。使用不推荐使用的代码是很偶然的——如果你想让某些东西现在工作,它可能是一个不错的选择,但是如果你想让你的代码增长并在未来得到维护,你应该看看替代方案。

其中,开罗可能是你最好的选择。只有一点样板 - 你应该看看http://cairographics.org/samples/它有一些非常小且易于理解的示例。Cairo 的潜在优势之一是它更有可能进行硬件加速。

[免责声明:我是 GdkRGB 的原作者。很遗憾看到它现在被弃用了,但我想它很好地达到了它的目的]

于 2011-01-08T20:01:49.553 回答