2

我正在寻找一些在 draw2d 框架内绘制半透明图形的方法。目前我正在使用setAlpha(). org.eclipse.draw2d.Graphics问题是,如果我绘制超过一半的透明图形,它会减慢整个 UI。

这是关于它的性能的另一个问题[1]。它针对 Linux 上的 SWT,我针对 Linux 和 Windows。windows (Win7) 系统具有支持 3D 的图形卡和 i7 q720。Linux机器装备更好,也有3D,所以我认为这不是平台的性能问题。

我的问题是:有没有一种高效的方法可以在 draw2d 中实现 alpha 混合?

我尝试分别使用 OpenGL LWJGL。由于draw2d和OpenGL不能混在一起,我必须依赖draw2d,我想我可以这样做:draw2d -> OpenGL -> draw2d here where canvasis the Canvas where the OpenGL draws and c1is the Canvas where I want得到绘制的OpenGL图片。但是我复制 OpenGL 绘图的尝试不起作用,它让我得到了底层的 Canvas ( canvas) 背景。除此之外,我不确定这是否会提高“性能”......

谢谢,
atx

4

2 回答 2

0

这个问题已知但未解决。在 draw2d 的邮件列表中有一个关于这个问题的线程:邮件列表

TL;DR:由于 LWJGL 和 Eclipse 之间的许可问题,放弃了一个可能的解决方案。

于 2011-10-19T14:20:48.203 回答
0

确保所有 src/dest 图像的深度相同(例如 ARGB)否则,在复制期间会发生昂贵的转换(src->dest)

GC 不允许访问其底层缓冲区,afaik。MemoryImageSource 可能是一种方法。

您可以使用以下方式获取 OpenGL 绘图图像:

BufferedImage capture  = new Robot().createScreenCapture(new Rectangle( canvas.getX(), canvas.getY(), canvas.getWidth(), canvas.getHeight() ) );

有点繁琐,但非常快。

我用它将我的实时动画帧的 jpeg 保存到一个文件夹中。

VirtualDub 然后从帧创建电影。必须玩帧率;)

非常适合制作 youtube 预告片! 你可以在这里看到一个!

于 2011-12-16T01:04:47.613 回答