2

draw2d フレームワーク内で半透明の図形を描画する方法を探しています。現在、私はsetAlpha()のを使用していorg.eclipse.draw2d.Graphicsます。問題は、半分以上の透明な図形を描画すると、UI 全体が遅くなることです。

これは、そのパフォーマンスに関する別の質問[1]です。Linux 上の SWT を対象としています。私は Linux と Windows の両方を対象としています。Windows (Win7) システムには、3D 対応のグラフィック カードと i7 q720 が搭載されています。Linux マシンはさらに優れた機能を備えており、3D も備えているため、プラットフォームのパフォーマンスの問題ではないと思います。

私の質問は: draw2d でアルファ ブレンディングを実現する効率的な方法はありますか?

OpenGL をそれぞれ LWJGL で使用しようとしました。draw2d と OpenGL を混同することはできず、draw2d に頼らなければならないので、次のようなことができると思いました: draw2d -> OpenGL -> draw2d ここcanvas、OpenGL 描画が行わc1れるキャンバスと、必要なキャンバスです。描画された OpenGL 画像を取得します。しかし、 OpenGL の図面をコピーしようとしてもうまくいきません。基盤となる Canvas ( canvas) の背景だけが取得されます。これに加えて、とにかく「パフォーマンス」が向上するかどうかはわかりません...

ありがとう、
atx

4

2 に答える 2

0

すべての src/dest 画像が同じ深さ (例: ARGB) であることを確認してください。そうしないと、コピー中にコストのかかる変換が発生します (src->dest)

GC は、基礎となるバッファーへのアクセスを許可していません。MemoryImageSource はその方法かもしれません。

次のようなものを使用して、OpenGL 描画イメージを取得できます。

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

ちょっと面倒ですが、非常に高速です。

ライブ アニメーション フレームの jpeg をフォルダーに保存するために使用します。

次に、VirtualDub がフレームからムービーを作成します。フレームレートで遊ぶ必要があります;)

YouTube ティーザーの制作に最適です。 ここで1つ見ることができます!

于 2011-12-16T01:04:47.613 に答える
0

この問題は既知ですが、未解決です。draw2d のメーリング リストには、この問題に関するスレッドがあります:メーリング リスト

TL;DR: LWJGL と Eclipse の間のライセンスの問題により、可能な解決策は削除されました。

于 2011-10-19T14:20:48.203 に答える