SWT draw2d alpha blending - PullRequest
       83

SWT draw2d alpha blending

2 голосов
/ 01 июня 2011

Я ищу какой-нибудь метод для рисования полупрозрачных фигур в рамках draw2d. В настоящее время я использую setAlpha() из org.eclipse.draw2d.Graphics. Проблема в том, что он замедляет весь интерфейс, если я рисую более половины прозрачной фигуры.

Вот еще один вопрос, касающийся его исполнения [1]. Он ориентирован на SWT в Linux, я ориентируюсь как на 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). Кроме того, я не уверен, что это все равно улучшит "перформанс" ...

Спасибо,
АТХ

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

Убедитесь, что все ваши изображения 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! Вы можете увидеть его здесь!

0 голосов
/ 19 октября 2011

Эта проблема известна, но не решена. В списке рассылки draw2d есть тема, касающаяся этой проблемы: список рассылки

TL; DR: возможное решение было упущено из-за проблем с лицензией между LWJGL и Eclipse.

...