2015-10-08 50 views
0

我正在使用OpenGL ES編寫YUV格式的視頻幀。用於繪製視頻幀的OpenGL ES着色器

與原始尺寸相比,視頻幀解碼器庫返回的尺寸較大,因爲它有一個步幅。

因此,當一幀被轉換成RGB時,它將變成像這樣的圖像,並且在紋理的角落處繪製綠色框。

RGB video frame

我現在的頂點sharder是這樣的。請教我如何幹淨地繪製紋理。

void main() { 
    vec3 yuv = get_yuv(nUV) - vec3(0.0625, 0.5, 0.5); 
    yuv *= mat3(
    1.16438356, 0.0, 1.59602679, 
    1.16438356, -0.391762290, -0.812967647, 
    1.16438356, 2.01723214, 0.0); 
    gl_FragColor.rgb = yuv; 
    gl_FragColor.a = 1.0; 
}; 

回答