gpt4 book ai didi

java - libgdx 中不一致的颜色渐变绘制矩形/ Sprite

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:17 26 4
gpt4 key购买 nike

我正在尝试使用 SpriteBatcher 绘制具有颜色渐变的 Sprite 并手动设置顶点颜色以在没有着色器的情况下实现某种基本照明效果,但我注意到当只有一种顶点颜色是不同。

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

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

results

我用下面的代码生成了最上面一行的方 block :

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

最佳答案

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

关于java - libgdx 中不一致的颜色渐变绘制矩形/ Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28768992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com