2013-09-26 96 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); 

我有以glDrawArrays結尾的opengles例程。我如何顯示opengles轉換的結果?

回答

0

您發佈的任何代碼都不會對OpenGL-ES做任何事情。的典型方法來實現用OpenGL(-ES)顏色空間變換到圖像加載到紋理,加載片段着色器執行色彩轉換和繪製一個(全視口)紋理四(這是如果四邊形的幾何被加載到頂點數組之前,glDrawArrays會做什麼)。

+0

我得到了OpenGLES相當於Yuv420_to_RGB函數。我缺乏的是如何顯示轉換的內容。即展示opengles緩衝區內容到表面 – RagFox

+0

@RagFox:好吧,用紋理作爲圖像繪製所需大小的紋理四邊形。那是怎麼做到的。 – datenwolf