如何修改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);
怎么做?
答案 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)
您可以创建使用C#方法的包装器库或Java字节代码。您应该能够使用VisualStudio自动生成并导出新的包装器库,如下所示:Wrap C# Libraries for Java
为什么坚持使用libgdx?您可以在Java中使用OpenGL:Java Binding for the OpenGL Library