繁体   English   中英

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

[英]Unconsistent color gradient drawing rectangles/sprites in libgdx

我正在尝试使用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绘制模式或其他......?

好的,事实是,绘图取决于三角形的顺序。 如果渐变从三角形的一个顶点通过其角平分线,则没有问题,但如果颜色渐变沿着它的边,则结果就像顶部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

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

结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM