Использование OpenGLES 1.1 (в настоящее время нет выбора). Целевая ОС — Android.
У меня есть некоторое несоответствие при рендеринге в основной буфер кадра и при рендеринге в текстуру.
При рендеринге на обычный экран все нормально. Когда я визуализирую текстуру, я получаю темную рамку вокруг моей графики везде, где альфа полупрозрачна.
Вот мои вспомогательные функции:
void RenderNormal()
{
if (!gIsRenderToTexture)
{
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glBlendEquationOES(GL_FUNC_ADD_OES);
}
else
{
glBlendFuncSeparateOES(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA,GL_ONE,GL_ONE_MINUS_SRC_ALPHA);
glBlendEquationSeparateOES(GL_FUNC_ADD_OES,GL_FUNC_ADD_OES);
}
}
void RenderAdditive()
{
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
}
void RenderMultiply()
{
glBlendFunc(GL_ZERO, GL_SRC_COLOR);
}
Итак, некоторые данные:
- В более новых системах это работает нормально (также в iOS, OSX и Linux).
- На Kindle Fire я все еще получаю темные ободки.
- На более старом Android-устройстве с KitKat мои функции сложения/умножения не отключаются (я предполагаю, что из-за жонглирования между glBlendFunc и glBlendFuncSeparate... Я ничего не отключаю, но все, что я пытаюсь сделать, чтобы исправить это, делает это хуже)
Я ищу способ объединить эти три функции, чтобы они могли работать как с рендерингом в текстуру, так и с рендерингом на обычный экран. Вы можете помочь?