精灵描边的效果在游戏里面很普及,效果参照下图
没有描边:
有描边:
今天用 love2d 也实现一个这样的效果,记录一下过程中遇到的问题和解决办法。
一开始想的办法是,把图片绘制两次.
一次正常绘制, 一次用纯色绘制 , 这样两个叠加起来,再把纯色绘制的 图片 ,变的面积"胖" 一些 ,就能实现了精灵描边的效果。
于是写了 纯色绘制的 像素着色器:
vec4 effect(vec4 color,Image texture,vec2 texture_coords,vec2 screen_coords)
{
vec4 pixel = Texel(texture,texture_coords);
if(pixel.a == 0)
{
discard;
}
return vec4(1.0,1.0,0.0,1.0);
}
效果是把图片 不透明的区域,绘制成同一种颜色。效果是这样的:
但是这样只是实现了 用纯色绘制,还没有 把图片"边胖"