Прозрачная текстура в OpenGL ES для Android - PullRequest
11 голосов
/ 02 марта 2010

Я пытаюсь установить прозрачность текстуры на четырехугольнике в opengl, игра с функциями смешивания не помогла и ничего не сделала в Google Есть предложения?

Ответы [ 3 ]

30 голосов
/ 02 марта 2010

У меня была похожая проблема: один фрагмент кода работал правильно, а другой - нет. После долгих журналов и отладок я обнаружил, что разница в одной строке кода.

В коде с работающей альфой я вызывал следующее перед установкой моего рендерера.

    setEGLConfigChooser(false)

Если это не поможет, вот пара других указателей ...

Убедитесь, что вы включили смешивание до загрузки текстуры.

Например:

    // Enable blending using premultiplied alpha.
    gl.glEnable(GL10.GL_BLEND);
    gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);

... и убедитесь, что растровое изображение, которое вы используете для создания текстуры, действительно имеет альфа-компонент.

1 голос
/ 17 декабря 2011

Следуя ответу Рона, я подошел к решению моей проблемы с прозрачностью текстуры, не отображаемой. Следующая проблема, с которой я столкнулся, заключалась в том, что за моим GLSurfaceView стоял не-GL SurfaceView с использованием:

setEGLConfigChooser(false);

Я видел мою текстуру в порядке, но весь мой SurfaceView был затемнен. Следующее исправило мою проблему:

setEGLConfigChooser(8, 8, 8, 8, 0, 0);

Установка false в качестве единственного параметра - это один из способов отключить проверку глубины, но вы можете эффективно сделать то же самое, установив параметр от 2-го до последнего также на 0. Первый из них создаст конфигурацию RGB_565 по умолчанию, в то время как мне потребовалась конфигурация RGBA_8888, следовательно, изменение.

1 голос
/ 03 марта 2010

Мне удалось исправить мою проблему, перечисленную другим способом.Сначала я установил

gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, /*GL10.GL_REPLACE*/ GL10.GL_MODULATE);

Затем смог установить альфа-текстуру, используя

gl.glColor4f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...