如何在libgdx中使用混合?

时间:2018-04-09 16:55:10

标签: java opengl libgdx

如何修改libgdx java的c#代码?

SpriteBatch.Begin(SpriteSortMode.Texture, maxBlend);

private static readonly BlendState maxBlend = new BlendState() {
    AlphaBlendFunction = BlendFunction.Max,
    ColorBlendFunction = BlendFunction.Max,
    AlphaDestinationBlend = Blend.One,
    AlphaSourceBlend = Blend.One,
    ColorDestinationBlend = Blend.One,
    ColorSourceBlend = Blend.One
};

我在那里找到了: article

尝试了这段代码,但它无法正常工作:

batch.setBlendFunction(GL20.GL_SRC_ALPHA, GL20.GL_ONE);
batch.setBlendFunction(GL20.GL_SRC_COLOR, GL20.GL_ONE);

而且:

Gdx.gl.glEnable(Gdx.gl20.GL_BLEND);
Gdx.gl.glBlendFunc(Gdx.gl20.GL_ONE, Gdx.gl20.GL_ONE);
Gdx.gl.glEnable(Gdx.gl20.GL_BLEND_COLOR);
Gdx.gl.glBlendFunc(Gdx.gl20.GL_ONE, Gdx.gl20.GL_ONE);

怎么做?

2 个答案:

答案 0 :(得分:1)

batch.setBlendFunction()方法采用混合函数的SRC和DST参数的参数,而不是您正在进行的通道和参数。

默认情况下,OpenGL会同时将RGB和alpha更改为相同的值。所以你的电话应该是:

batch.setBlendFunction(GL20.GL_ONE, GL20.GL_ONE);

要使用MAX混合方程,您必须使用GL 3.0,因为OpenGL ES 2.0不支持它。在batch.begin()之后:

Gdx.gl30.glBlendEquation(GL30.GL_MAX);

要在更改后“清理”,请在batch.end()之后将其清除,以便按预期绘制其他内容:

Gdx.gl30.glBlendEquation(GL20.GL_FUNC_ADD);

答案 1 :(得分:-1)

  1. 您可以创建使用C#方法的包装器库或Java字节代码。您应该能够使用VisualStudio自动生成并导出新的包装器库,如下所示:Wrap C# Libraries for Java

  2. 为什么坚持使用libgdx?您可以在Java中使用OpenGL:Java Binding for the OpenGL Library