相关疑难解决方法(0)

更快速地替代iPhone OpenGL ES 2.0中的glReadPixels

有没有比使用glReadPixels更快的方式来访问帧缓冲区?我需要对帧缓冲区中的小矩形渲染区域进行只读访问,以便在CPU中进一步处理数据.性能很重要因为我必须重复执行此操作.我在网上搜索并发现了一些方法,比如使用像素缓冲区对象和glMapBuffer,但似乎OpenGL ES 2.0不支持它们.

iphone opengl-es ios opengl-es-2.0

66
推荐指数
1
解决办法
3万
查看次数

iPad/iPhone上的OpenGL ES 2.0到视频

尽管StackOverflow上有很好的信息,但我仍然在这里尽力而为......

我正在尝试将OpenGL渲染缓冲区写入iPad 2上的视频(使用iOS 4.3).这正是我正在尝试的:

A)设置AVAssetWriterInputPixelBufferAdaptor

  1. 创建一个指向视频文件的AVAssetWriter

  2. 使用适当的设置设置AVAssetWriterInput

  3. 设置AVAssetWriterInputPixelBufferAdaptor以将数据添加到视频文件中

B)使用该AVAssetWriterInputPixelBufferAdaptor将数据写入视频文件

  1. 将OpenGL代码渲染到屏幕上

  2. 通过glReadPixels获取OpenGL缓冲区

  3. 从OpenGL数据创建CVPixelBufferRef

  4. 使用appendPixelBuffer方法将PixelBuffer附加到AVAssetWriterInputPixelBufferAdaptor

但是,我遇到了这个问题.我现在的策略是在按下按钮时设置AVAssetWriterInputPixelBufferAdaptor.一旦AVAssetWriterInputPixelBufferAdaptor有效,我设置一个标志来通知EAGLView创建一个像素缓冲区,并通过appendPixelBuffer将它附加到视频文件中给定数量的帧.

现在我的代码崩溃,因为它试图附加第二个像素缓冲区,给我以下错误:

-[__NSCFDictionary appendPixelBuffer:withPresentationTime:]: unrecognized selector sent to instance 0x131db0
Run Code Online (Sandbox Code Playgroud)

这是我的AVAsset设置代码(很多是基于Rudy Aramayo的代码,它可以在普通图像工作,但不是为纹理设置的):

- (void) testVideoWriter {

  //initialize global info
  MOVIE_NAME = @"Documents/Movie.mov";
  CGSize size = CGSizeMake(480, 320);
  frameLength = CMTimeMake(1, 5); 
  currentTime = kCMTimeZero;
  currentFrame = 0;

  NSString *MOVIE_PATH = [NSHomeDirectory() stringByAppendingPathComponent:MOVIE_NAME];
  NSError *error = nil;

  unlink([betaCompressionDirectory UTF8String]);

  videoWriter = [[AVAssetWriter alloc] initWithURL:[NSURL fileURLWithPath:betaCompressionDirectory] fileType:AVFileTypeQuickTimeMovie error:&error];

  NSDictionary *videoSettings = [NSDictionary dictionaryWithObjectsAndKeys:AVVideoCodecH264, AVVideoCodecKey,
                                 [NSNumber numberWithInt:size.width], AVVideoWidthKey, …
Run Code Online (Sandbox Code Playgroud)

video ios xcode4 avassetwriter opengl-es-2.0

9
推荐指数
1
解决办法
9478
查看次数

将BGRA转换为ARGB

我正在阅读本教程,从iPhone相机获取像素数据.

虽然我没有运行和使用此代码的问题,但我需要获取相机数据的输出(在BGRA中)并将其转换为ARGB,以便我可以将其与外部库一起使用.我该怎么做呢?

core-graphics ios avcapturesession avcam

4
推荐指数
1
解决办法
4649
查看次数