2013-09-26 4 views
0

Я хочу отобразить преобразованный фрейм yuv в rgb на дисплей по умолчанию. В настоящее время я делаю это со следующим кодом, где преобразование yuv в rgb выполняется с помощью кода сборки, который загружает CPU. Я нашел код, чтобы сделать то же самое с opengles.Отображение содержимого буфера OpenglES

Yuv420_to_RGB(ui8buf, buffer1, h1, w1); /* RGB data will be resulted in buffer1 */ 
window = ANativeWindow_fromSurface(env, surface); 
ANativeWindow_acquire(window); 
wid = ANativeWindow_getWidth(window); 
hei = ANativeWindow_getHeight(window); 
ANativeWindow_setBuffersGeometry(window,w1,h1,1) 

if (ANativeWindow_lock(window, &buffer, NULL) == 0) 
{ 
    memcpy(buffer.bits, buffer1, (4* w1*h1)); 
    ANativeWindow_unlockAndPost(window); 
} 
ANativeWindow_release(window); 

У меня есть принцип opengles, заканчивающийся glDrawArrays. Как я могу отобразить результат преобразования opengles?

ответ

0

Ничто из кода, который вы отправили, ничего не делает с OpenGL-ES. Типичный способ реализовать преобразование цветового пространства с OpenGL (-ES) является, чтобы загрузить изображение в текстуры, загрузить фрагмент шейдера выполняет преобразование цвета и нарисовать а (полный видовых) текстурированного четырехугольник (это что glDrawArrays будет делать, если геометрия квада была загружена в массивы вершин раньше).

+0

У меня есть эквивалент OpenGLES функции Yuv420_to_RGB. Мне не хватает отображения отображаемого содержимого. i.e отображение содержимого буфера opengles на поверхность – RagFox

+0

@RagFox: ну, нарисуйте текстурированный квадрат желаемого размера с текстурой, являющейся изображением. Вот как это сделать. – datenwolf

Смежные вопросы