0

我想在游戏本身上叠加一个精灵以使屏幕变暗,然后在其上叠加浅色精灵,所以就像深色精灵将是一个覆盖整个屏幕的黑色像素,然后是另一个在高级别为白色的精灵光,变暗时变暗,我如何才能正确地绘制和混合它们?

这是我到目前为止的渲染代码:

public void Render() {

          // seting up camera position
         //render game elements and background
     ....
         batcher.setColor(1, 1, 1, .25f); // set alpha to .25f so it wouldnt be
                                          //completely black
         batcher.draw(Assets.shadow, 0, 0, 15, 8f); // drawing the shadow over
                                                    //the whole world (15 x 8)
         batcher.draw(Assets.light, 4, 0, 8, 2.5f); //drawing the light sprite

     ....
          //finishing rendering
}

我也尝试添加

 batcher.setBlendFunction(GL20.GL_BLEND_SRC_ALPHA,
     GL20.GL_BLEND_DST_ALPHA);

尝试在那里获得“乘法”效果,但这不起作用,我将它放在batcher.setcolor().

我还在角色和世界渲染之后放置了光渲染代码,这样它就会覆盖在角色上并影响它的颜色,(这就是我的想法......)

这是Assets.shadow: http: //i.stack.imgur.com/kzXlI.png 在此处输入图像描述(字面意思是一个黑色像素.. idk,如果你们能看到它?)

assets.light:http: //i.stack.imgur.com/mNANb.png 在此处输入图像描述

我放大了这些图片,并将纹理过滤器设置为线性以获得灯光效果。

如果需要其他任何东西,请告诉我并提供。

编辑:这是它在游戏中的样子:

在光明中:

在此处输入图像描述

在阴影中:

在此处输入图像描述

4

2 回答 2

0

只是一个猜测,但在使用混合功能时尝试使用具有完整 alpha(非透明)的白色像素,因为当您进行混合时,alpha 会修改底层像素应该有多少变亮/变暗。

所以黑色 = 没有变化 - 白色 = 完全变化

于 2014-04-22T14:48:10.353 回答
0

可能是您正在寻找的。你也可以在没有着色器的情况下做到这一点。只需绘制您的场景并用深蓝色透明颜色“过度绘制”它以添加黑暗。如果你想有亮点,那么你可以使用 FrameBuffers。看看这个问题

于 2014-01-23T14:41:07.907 回答