我有一个程序在窗口中显示具有固定帧速率(比如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
Run Code Online (Sandbox Code Playgroud)
除了非常基本的GDK/GTK调用之外,我不想使用任何功能来创建和管理窗口并接收输入事件.
在FAQ中他们建议使用GdkRGB.但是,在GdkRGB的官方文档中,他们使用了gdk_draw_rgb_image()不推荐使用的功能,实际上大多数GdkRGB功能都是.
作为替代方案,他们建议使用OpenGL.问题是它需要一些不常见的库,如GtkGLArea,它不是GTK的一部分(我不想依赖任何默认安装的库).此外,在我的系统上,驱动程序的OpenGL支持是有限的.
我已经研究了Cairo(它是一些不赞成使用的功能的替代方案)但是这会为我相对简单的问题添加更多的样板代码(我怀疑需要额外的开销).
我个人认为 GdkRGB 对您来说是一个合理的选择。它的设计很简单,而且它的范围几乎正是您所描述的。使用已弃用的代码是有风险的——如果您现在想让某些东西正常工作,那么它可能是一个不错的选择,但如果您希望您的代码能够增长并在未来得到维护,您应该考虑替代方案。
其中,开罗可能是您最好的选择。只有更多的样板文件 - 您应该查看http://cairgraphics.org/samples/,其中有一些非常小且易于理解的示例。Cairo 的潜在好处之一是它更有可能进行硬件加速。
[免责声明:我是GdkRGB的原作者。很遗憾看到它现在被弃用了,但我认为它很好地达到了它的目的]