Java 如何在libgdx中使用混合?

Java 如何在libgdx中使用混合?,java,opengl,libgdx,Java,Opengl,Libgdx,如何将此c#代码改编为libgdxJava SpriteBatch.Begin(SpriteSortMode.Texture, maxBlend); private static readonly BlendState maxBlend = new BlendState() { AlphaBlendFunction = BlendFunction.Max, ColorBlendFunction = BlendFunction.Max, AlphaDestinationB

如何将此c#代码改编为libgdxJava

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
};
我在那里找到的:

已尝试此代码,但无法正常工作:

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);
怎么做

  • 您可以创建使用C#方法的包装器库或Java字节码。您应该能够使用VisualStudio自动生成和导出新的包装器库,如下所述:

  • 为什么要坚持libgdx?您可以在Java中使用OpenGL:


  • batch.setBlendFunction()
    方法获取混合函数的SRC和DST参数,而不是像您现在所做的那样获取通道和参数

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

    batch.setBlendFunction(GL20.GL_ONE, GL20.GL_ONE);
    
    要使用最大混合方程,必须使用GL 3.0,因为OpenGL ES 2.0不支持它。在批处理后立即开始()put:

    Gdx.gl30.glBlendEquation(GL30.GL_MAX);
    
    要在更改后“清理”,请将此项放在批处理.end()之后,以便按预期绘制其他内容:

    Gdx.gl30.glBlendEquation(GL20.GL_FUNC_ADD);
    

    2个可怕的建议