Java 如何在libgdx中使用混合?
如何将此c#代码改编为libgdxJavaJava 如何在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
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);
怎么做
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个可怕的建议