Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于二维平铺的平滑照明_Java - Fatal编程技术网

Java 基于二维平铺的平滑照明

Java 基于二维平铺的平滑照明,java,Java,我已经有了一个实用的光照贴图和照明算法: 我没有使用OpenGl,我不需要光线投射阴影,我只是希望光照贴图在光照贴图顶点之间混合渐变,使其平滑而不是块状。我看到这样做的一种方式如下:为包含光照贴图数据的每个分片绘制一个一个像素的图像,然后使用分片的大小和插值将其放大。然而,我不知道如何做到这一点和使用这个 lightmapimage.getScaledInstance(w、h、Image.SCALE\u平滑) 只是产生了与上图相同的效果,但速度非常慢。 我该如何以一种节省资源的方式平滑照明呢?我

我已经有了一个实用的光照贴图和照明算法:

我没有使用OpenGl,我不需要光线投射阴影,我只是希望光照贴图在光照贴图顶点之间混合渐变,使其平滑而不是块状。我看到这样做的一种方式如下:为包含光照贴图数据的每个分片绘制一个一个像素的图像,然后使用分片的大小和插值将其放大。然而,我不知道如何做到这一点和使用这个
lightmapimage.getScaledInstance(w、h、Image.SCALE\u平滑)
只是产生了与上图相同的效果,但速度非常慢。
我该如何以一种节省资源的方式平滑照明呢?

我想出来了。对于任何对基于二维平铺的平滑照明感兴趣的人,我的解决方案是:在将光照贴图绘制为小比例图像(其中每个像素代表一个平铺)后,使用双线性类型的
AffineTransformOp
。(平铺大小为10x10)


但是,如果其他人有一个更有效的解决方案,我会非常感兴趣。
BufferedImage after = new BufferedImage(lightmap.getWidth()*10, lightmap.getHeight()*10, BufferedImage.TYPE_INT_ARGB);
AffineTransform at = new AffineTransform();
at.scale(10, 10);
AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
after = scaleOp.filter(lightmap, after);
g.drawImage(after,0,0,null);