Я рисую одну и ту же текстуру дважды;один поверх другого.Вторая текстура увеличена, чтобы создать эффект «картинка в картинке».Я использую те же вершинные и фрагментные шейдеры, и те же ссылки на них.
При glEnable(GL_BLEND)
вывод выглядит (нежелательно):
При glDisable(GL_BLEND)
вывод выглядит следующим образом (желательно):
Но, выполнив glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, buf);
с glDisable(GL_BLEND)
, я получаю полностью черное изображение с несколькими случайными мазками по краям изображения (плюс отметка времени получается отлично).
Редактировать 1: вывод, который я получаю: Обратите внимание, я преобразую буфер байтов в растровое изображение, а затем в jpeg.
Почему может glReadPixels
возвращать черный вывод и как мне это исправить?
РЕДАКТИРОВАТЬ 2: Хорошо, даже при настройке glEnable(GL_BLEND)
с функцией смешивания GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ZERO);
, которая отображает желаемый вывод, я получаю такой же черный /пустой вывод glReadPixels
.Это означает, что это может не иметь никакого отношения к смешиванию, но, возможно, тот факт, что я использую одну и ту же программу (фрагмент + вершина), чтобы нарисовать их друг на друге.Крайне невежественный на данный момент.