【发布时间】:2013-04-22 11:46:47
【问题描述】:
我正在使用 GCC 在 Linux 上制作一个应用程序,其中一段时间以来我一直在使用 PngLIB 从磁盘加载我的图片。我从标准的 xlib 跳转到 Xrender 扩展,以便利用此扩展提供的抗锯齿和 alpha 通道属性。
但是,此扩展提供了一组简化的原语。例如,为了显示从磁盘加载的图片,我一直在使用 pnglib 加载它,然后调用 XRenderFillRectangle,宽度和高度为 1 个像素以及该像素所需的颜色。然而,随着我增加从磁盘加载的图标和图片的数量,很容易理解我很容易遇到对原始 XRenderFillRectangle 的数百万次调用。结论:目前,该应用程序需要大约 20 秒来渲染所有内容,甚至还不到我想要渲染的一半。
我很确定我使用的这种方法是完全错误的,必须有另一种方法!而且我也很确定这不是 Cairo 或 Java2D 生成内容的方式。
所以我的问题是:如何准备并放入由应用程序生成的 Xrender 图像的图片?例如,从磁盘加载的图像?
标准的 XPutImage 函数可以应用于 Xrender 的图片吗?我应该在生成图片之前将数据放入 Pixmap 吗?到目前为止,我的方法还没有奏效。
PS:请不要推荐我使用更丰富的库,例如 Cairo 或 Qt。我现在在这里提出这个问题,因为不幸的是,每次我找到有关这种情况的帖子时,大多数人的回答是:使用开罗。我真的需要在这个 X11 系统上保持尽可能低的水平。非常感谢。
【问题讨论】:
-
您是否尝试使用site search?
-
您是否尝试阅读我的问题?我正在使用 Xrender 扩展,因此我不能将 XPutImage 应用于图片,只能应用于 PixMap。
-
为什么不想用普通的xlib?
-
因为普通的xlib不支持抗锯齿和alpha混合:)