libgdx中不一致的颜色渐变绘制矩形/精灵

时间:2015-02-27 15:48:00

标签: java opengl libgdx

我尝试使用SpriteBatcher绘制带有颜色渐变的精灵,并手动设置顶点颜色以实现某种基本的照明效果而不使用着色器,但我注意到只有一个顶点时渐变中的奇怪效果颜色不同。

取决于顶点的位置。如果左下角或右上角的颜色不同,那么没有问题,但在另外两种情况下,会出现奇怪的渐变效果。

为了更好地解释这种情况,这里是一张图片。

results

我使用以下代码生成了第一行方块:

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绘制模式或其他......?

1 个答案:

答案 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

它可以正常工作,我们可以在这里看到:

result