2016-03-25 15 views
1

[_videoOutput copyPixelBufferForItemTime: [_ playerItem currentTime] itemTimeForDisplay: nil] kaynağından CVPixelBuffer'ı alıyorum;OpenGLES 3 Hata CVOpenGLESTextureCacheCreateTextureFromImage -6683

: ve ben
// Y-plane 
glActiveTexture(GL_TEXTURE0); 
err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault,_videoTextureCache, pixelBuffer, NULL, GL_TEXTURE_2D, GL_RED_EXT,width, height, GL_RED_EXT, GL_UNSIGNED_BYTE, 0, &outTexture); 
if (err) { 
    NSLog(@"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); 
} 

Ben OpenGLES 2.0 kullanmak

, işe yaradı, ancak OpenGLES 3.0'a, başarısız olacaktır değişti luma doku veya krom doku oluşturmak ve aşağıdaki gibi bazı hatalar yazdırmak için CVOpenGLESTextureCacheCreateTextureFromImage işlevine bu pixelbuffer aktarmak CVOpenGLESTextureCacheCreateTextureFromImage -6683 de

hata IOSurface görüntü (doku)

OpenGLES oluşturulamadı 3.0/2.0 kodu:

_context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; 

if (!_context) { 
    _context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; 
    if (!_context) { 
     NSLog(@"Failed to create ES context"); 
    } 
    _openGLESVer = OpenGLESVersion2; 
} 

cevap

1

OpenGL ES 3.0 kullanarak, bunu çalışmalı, (bir sene önce benim app kullanıyorum) kodu altında düşünün GL_LUMINANCE ile GL_RED_EXT değiştirmeniz gerekiyor sadece pixelBuffer olup yuv420sp olmadığını tam aralık veya video aralığı. CVOpenGLESTextureCacheCreateTextureFromImage'un, yuv420p ile çalışmayacağını unutmayın. // Y-plane glActiveTexture(GL_TEXTURE0); err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault,_videoTextureCache, pixelBuffer, NULL, GL_TEXTURE_2D, GL_LUMINANCE,width, height, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, &outTexture);

+0

Core Video'da yuv420sp sabiti nedir? –

İlgili konular