Поскольку пиксель YUV не упакован, вы должны прикрепить несколько цветовых буферов к программе шейдеров (т. Е. Один для яркости и два для цветности).
Размеры выходных буферов цветности отличаются от яркости один, из-за выборки цветности.По этой причине вы должны проверить расширение ARB_framebuffer_object.Если не доступно, вы должны вычислить несоответствующие значения цветности и сэмплировать их после рендеринга.Также обратите внимание, что сэмплирование в шейдере не так просто, так как вы должны знать исходное положение пикселя, и быть осторожным с координатами текстуры.
Итак, создайте объект кадрового буфера, присоедините 3 объекта renderbuffer (или текстуры), иобъявите выходную переменную фрагмента шейдера как массив длиной 3 vec4.
Присоединенные буферы могут иметь КРАСНЫЙ внутренний формат, поскольку они хранят только один компонент.
После визуализации извлекайте данные рендеринга (или текстуры)данные), чередуйте слой YUV по мере необходимости (возможно, используя SSE), и вы сделали свою работу.
Возможно, вы хотите сгенерировать несэмплированные значения цветности.В этом случае вы должны самостоятельно сэмплировать буферы цветности, возможно, смешивая смежные значения цветности.