objective-c - iPhone OpenGL-ES 视频纹理

标签 objective-c ios opengl-es augmented-reality avassetreader

我有一种感觉,我在这里忽略了一些简单的东西......

我有一个 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_NEARESTGL_LINEAR对于 GL_TEXTURE_MIN_FILTER .

您可能还需要二次幂纹理尺寸。

关于objective-c - iPhone OpenGL-ES 视频纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7656827/

相关文章:

ios - TableView 复选标记

ios - SwiftyStoreKit - 如何正确恢复自动更新订阅?

ios - 从 View 中删除 UITapGestureRecognizer 而没有指向它的强指针

ios - 在 iPad/iOS 上启用 4x MSAA 抗锯齿时出现伪影

iphone - 分段线仅在iPhone上绘制第一段。在模拟器中完美工作

ios - 如何删除 UITableView 中的箭头

ios - Objective-c 中的 class_replaceMethod 不适用于 Swift 类

objective-c - 有没有办法在 Objective-C 中捕获发送到 nil 的消息?

ios - 使用贝塞尔路径作为剪贴蒙版

android - 专为 Android ARM5TE 构建的应用程序,但设备支持 ARM5T