我尝试使用SpriteBatcher绘制带有颜色渐变的精灵,并手动设置顶点颜色以实现某种基本的照明效果而不使用着色器,但我注意到只有一个顶点时渐变中的奇怪效果颜色不同。
取决于顶点的位置。如果左下角或右上角的颜色不同,那么没有问题,但在另外两种情况下,会出现奇怪的渐变效果。
为了更好地解释这种情况,这里是一张图片。
我使用以下代码生成了第一行方块:
shapeRenderer.begin(ShapeType.Filled);
Color c1 = new Color(1,1,1,1);
Color c2 = new Color(1,0,0,1);
shapeRenderer.rect(100f, 100f, 30f, 30f, c2, c1, c1, c1);
shapeRenderer.rect(150f, 100f, 30f, 30f, c1, c2, c1, c1);
shapeRenderer.rect(200f, 100f, 30f, 30f, c1, c1, c2, c1);
shapeRenderer.rect(250f, 100f, 30f, 30f, c1, c1, c1, c2);
shapeRenderer.end();
此代码是使用ShapeRenderer生成的,但如果我使用SpriteBatch,我会得到相同的结果。
我想它与内部绘制矩形的方式有关(基于2个三角形)但是,在所有情况下,有没有办法达到相同的效果? (作为图像的第3行)
有点像不同的GL绘制模式或其他......?
答案 0 :(得分:2)
好的,那就是,绘图取决于三角形的顺序。 如果渐变从三角形的一个顶点到它的角平分线,则没有问题,但如果颜色渐变沿着它的一侧,结果就像顶部1和顶部3的正方形。
这是(我认为)这是一个像
这样的矩形1-2
| |
4-3
实际上是用两个三角形绘制的,如
1-2 1
\| and |\
3 4-3
因此,按此顺序,如果不同的颜色位于顶点1或3中,则生成的渐变很奇怪。
在这种情况下我们可以做的是改变顶点(而不是它的坐标)的顺序,就像这样绘制
2-3 2-3 3
| | => |/ + /|
1-4 1 1-4
它可以正常工作,我们可以在这里看到: