Ben özü YUV ayrı görüntü çerçeveden veriler ve kare boyutu Şimdi aşağıda pixelBuffer
creat 640*480;
olduğunu data[0],data[1],data[2];
onları kurtardı:-6683 (kCVReturnPixelBufferNotOpenGLCompatible) return CVOpenGLESTextureCacheCreateTextureFromImage
void *pYUV[3] = {data[0], data[1], data[2]};
size_t planeWidth = {640, 320, 320};
size_t planeHeight = {480, 240, 240};
size_t planeBytesPerRow = {640, 320, 320};
CVReturn renturn = CVPixelBufferCreateWithPlanarBytes(kCFAllocatorDefault,
640,
480,
kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange,
nil,
nil,
3,
pYUV,
planeWidth,
planeHeight,
planeBytesPerRow,
nil,
nil, nil, &_pixelBuffer);
CVPixelBufferLockBaseAddress(_pixelBuffer, 0);
CVPixelBufferRetain(_pixelBuffer);
// Periodic texture cache flush every frame
CVOpenGLESTextureCacheFlush(_textureCache, 0);
// The Buffer cannot be used with OpenGL as either its size, pixelformat or attributes are not supported by OpenGL
glActiveTexture(GL_TEXTURE0);
CVReturn err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault,
_textureCache,
_pixelBuffer,
NULL,
GL_TEXTURE_2D,
GL_LUMINANCE,
im.width,
im.height,
GL_LUMINANCE,
GL_UNSIGNED_BYTE,
0,
&_yTexture);
if (!_yTexture || err) {
NSLog(@"CVOpenGLESTextureCacheCreateTextureFromImage failed (error: %d)", err);
return;
}
glBindTexture(CVOpenGLESTextureGetTarget(_yTexture), CVOpenGLESTextureGetName(_yTexture));
CVPixelBufferUnlockBaseAddress(_pixelBuffer, 0);
Ama err olduğunu -6638 belgede, "Desteklenmeyen bir arabellek boyutu, piksel biçimi veya öznitelik nedeniyle piksel arabelleği OpenGL ile uyumlu değil" şeklinde belirtilmektedir. bana fazla yardım etmiyor.
Nasıl düzeltebilirim?
'daki değer olarak belirtin Bunu hiç anladın mı? Aynı sorunum var – Hammer
Aynı hatayı aldım. Herhangi bir gelişme? – polyclick