У меня проблема с неправильными результатами альфа-смешивания с openGL ES на iPhone.
Это мой код для создания объекта текстуры:
glGenTextures(1, &tex_name);
glBindTexture(GL_TEXTURE_2D, tex_name);
glTextImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex_width, tex_height, GL_RGBA, GL_UNSIGNED_BYTE, tex_data);
'tex_data' загружается из необработанных данных RGBA8888, упакованных с помощью zlib. Он загружается так, как должен, который я проверил с помощью отладчика.
Это мой код для настройки текстуры перед рендерингом:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBindTexture(GL_TEXTURE_2D, tex_name);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
Я загрузил образец того, что я ожидал и что у меня здесь: образец . В образце большая часть текстуры снизу темно-черного цвета с непрозрачностью 70%. Однако openGL отображает его как серый. Эта проблема затрагивает все мои текстуры, с которыми я смешиваюсь.
Я протестировал код на окнах с использованием OGLES PVRVFrame, и результаты были ожидаемыми: черный цвет отображается как черный.