我正在尝试使用SpriteBatcher绘制具有颜色渐变的精灵,手动设置顶点颜色以实现一些基本的照明效果,而不需要着色器。但是我注意到了一个奇怪的问题,在只有一个顶点颜色不同的情况下,渐变会产生奇怪的效果。
这取决于顶点的位置。如果不同的颜色在左下角或右上角,就没有问题,但在另外两种情况下,会出现奇怪的渐变效果。
为了更好地解释情况,这里有一张图片。
我用以下代码生成了上排正方形:
这段代码是使用ShapeRenderer生成的,但如果我使用SpriteBatch,也会得到相同的结果。我想这与绘制矩形的内部方式有关(基于2个三角形),但是否有任何方法可以在所有情况下实现相同的结果?(如图像的第三行)类似于不同的GL绘制模式或其他什么东西...?
这取决于顶点的位置。如果不同的颜色在左下角或右上角,就没有问题,但在另外两种情况下,会出现奇怪的渐变效果。
为了更好地解释情况,这里有一张图片。
我用以下代码生成了上排正方形:
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个三角形),但是否有任何方法可以在所有情况下实现相同的结果?(如图像的第三行)类似于不同的GL绘制模式或其他什么东西...?