[英]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.