我有一种感觉,我在这里忽略了一些简单的东西......
我有一个 AR 应用程序,可在标记检测时显示 3D 对象。该对象只是一个平坦的 3d 矩形 - 我可以毫无问题地将图像纹理绑定(bind)到该矩形。但是,我需要将视频文件 (.m4v) 绑定(bind)为对象纹理。我正在使用 成功读取文件AVAssetReader ,但是当像这样绑定(bind)纹理时,对象只是显示为白色。
CMSampleBufferRef sampleBuffer = [mOutput copyNextSampleBuffer];
CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress( pixelBuffer, 0 );
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 320, 240, 0, GL_BGRA, GL_UNSIGNED_BYTE, CVPixelBufferGetBaseAddress(pixelBuffer));
CVPixelBufferUnlockBaseAddress( pixelBuffer, 0 );
CFRelease(sampleBuffer);
我很感激你能提供的任何帮助。谢谢!
最佳答案
default texture parameters需要一套完整的 mipmap。
尝试使用 GL_NEAREST
或 GL_LINEAR
对于 GL_TEXTURE_MIN_FILTER
.
您可能还需要二次幂纹理尺寸。
关于objective-c - iPhone OpenGL-ES 视频纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7656827/