2015-05-14 8 views
1

Я пытаюсь сочетать белую текстуру с изменяющимися значениями альфа с цветным фоном. Я ожидаю, что результат сохранит цвета на заднем фоне и заменит альфа-значения на единицы из смешанной текстуры.OpenGL (libgdx) - смешение альфа-карты

Так, для фона я использую:

Gdx.gl.glEnable(GL20.GL_BLEND); 
Gdx.gl.glBlendEquationSeparate(GL20.GL_FUNC_ADD, GL20.GL_FUNC_ADD); 
Gdx.gl.glBlendFuncSeparate(GL20.GL_ONE, GL20.GL_ZERO, GL20.GL_ONE, GL20.GL_ZERO); 

Я ожидаю, что фоновые треугольники сетки, чтобы отменить назначение, как цвет и альфа.

Вопрос 1 - почему с этими параметрами blendFunc альфа-значение игнорируется? Если я установил blendfunc в GL_ONE, GL_ONE, GL_ZERO, GL_ZERO, тогда заполненная сетка будет отображаться с соответствующим альфа-уровнем, но как источник, так и dest alpha должны быть умножены на ноль - почему это работает?

====

Теперь смешать альфа-карту я использую:

Gdx.gl.glBlendEquationSeparate(GL20.GL_FUNC_ADD, GL20.GL_FUNC_ADD); 
Gdx.gl.glBlendFuncSeparate(GL20.GL_ZERO, GL20.GL_ONE, GL20.GL_ONE, GL20.GL_ZERO); 

Вопрос 2 - это должно сохранить цвет назначения и замены альфа. Тем не менее, когда я визуализую текстуру с этими параметрами blendfunc, я вообще не получаю никаких изменений в выходе ...

Я читал главу о смешивании opengl снова и снова, чтобы понять, что я не понимаю, пожалуйста , поделиться своим представление о том, как эти параметры фактически работают

ответ

0

Я использую это:

Gdx.gl.glEnable(GL20.GL_BLEND); 
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); 

Он работает, но только в порядке оказания. Для учета глубины вам понадобится альфа-тестирование, которое не включает libGDX.