title: CVOpenGLESTextureCacheCreateTextureFromImage return -6683(kCVReturnPixelBufferNotOpenGLCompatible)
body: <p>I had extract Y U V data from video frame separately and saved them in <code>data[0],data[1],data[2];</code>The frame size is <code>640*480;</code>Now I creat the <code>pixelBuffer</code> as below:</p>
  
  <pre><code>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, &amp;_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,
                                                              &amp;_yTexture);
  
  if (!_yTexture || err) {
      NSLog(@"CVOpenGLESTextureCacheCreateTextureFromImage failed (error: %d)", err);  
      return;
  }
  glBindTexture(CVOpenGLESTextureGetTarget(_yTexture), CVOpenGLESTextureGetName(_yTexture));
   CVPixelBufferUnlockBaseAddress(_pixelBuffer, 0);
  </code></pre>
  
  <p>But the err is -6638, the documentation simply states that "The pixel buffer is not compatible with OpenGL due to an unsupported buffer size, pixel format, or attribute." which does not help me much.</p>
  
  <p>How can I fixed it?</p>