首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在所有平台上使用硬件加速来绘制图像?

如何在所有平台上使用硬件加速来绘制图像?
EN

Stack Overflow用户
提问于 2017-06-26 17:38:03
回答 1查看 323关注 0票数 0

我已经用red=x和alpha=y创建了256x256的图像:

代码语言:javascript
复制
    int[] pix = new int[256*256];
    for (int i = 0; i < pix.length; ++i)
        pix[i] = i << 16;
    BufferedImage img1 = new BufferedImage(256, 256, BufferedImage.TYPE_INT_ARGB);
    img1.setRGB(0, 0, 256, 256, pix, 0, 256);

并已复制到易失性镜像:

代码语言:javascript
复制
    VolatileImage img2 = canvas.createVolatileImage(256, 256);
    img2.createGraphics().drawImage(img1, 0, 0, null);

当我将BufferedImage绘制到画布时,它错误地处理alpha,并且没有加速(drawImage为0.9毫秒):

当我绘制VolatileImage时,它会处理alpha和加速(0.03ms):

但它是在Windows下。在MacOS下,我看到了不同的结果。对于BufferedImage,它不会处理alpha,但会加速;对于VolatileImage,它会正确处理alpha,但不会加速。(或者两者都没有加速,只是BufferedImage的软件处理速度快了很多)。

问题-如何在所有平台上使用正确的alpha处理和加速正确绘制图像。

ps。img2.setAccelerationPriority(1)没有任何效果。

pps。我错了,在第二种情况下,它没有正确处理alpha,它只是预先计算了图像,并将alpha应用于cavas的默认背景颜色。

EN

回答 1

Stack Overflow用户

发布于 2017-06-27 16:37:17

代码语言:javascript
复制
System.getProperties().setProperty("sun.java2d.opengl", "true");        

此设置解决了加速问题,现在drawImage有0.004毫秒

而且alpha处理根本没有问题,我只是在同一个地方用alpha绘制了1000次相同的图像进行时间测试,结果造成了如此丑陋的图像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44756784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档