- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 AVFoundation 从相机捕获信息,将其传递给 CIFilter 以将较暗的像素替换为 alpha 级别为 0 的像素,并将其显示在 GLKView 上。
包含的 View Controller 是一个 GLKViewController,但程序的核心是函数:
-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
@autoreleasepool {
CVPixelBufferRef pixelBuffer = (CVPixelBufferRef)CMSampleBufferGetImageBuffer(sampleBuffer);
CIImage *image = [CIImage imageWithCVPixelBuffer:pixelBuffer options:[NSDictionary dictionaryWithObject:(id)kCFNull forKey:kCIImageColorSpace]];
image = [image imageByApplyingTransform:CGAffineTransformMakeRotation(-M_PI/2.0)];
CGPoint origin = [image extent].origin;
image = [image imageByApplyingTransform:CGAffineTransformMakeTranslation(-origin.x, -origin.y)];
[self.replaceDarkColorWithTransparentFilter setValue:image forKey:@"inputImage"];
image = self.replaceDarkColorWithTransparentFilter.outputImage;
[self.ciContext drawImage:image inRect:CGRectMake(0.0f, 0.0f, 480.0f, 640.0f) fromRect:[image extent]];
[self.eaglContext presentRenderbuffer:GL_RENDERBUFFER];
[self.replaceDarkColorWithTransparentFilter setValue:nil forKey:@"inputImage"];
}
}
在 GLKViewController 中,我使用以下方法初始化渲染缓冲区:
glGenRenderbuffers(1, &_renderBuffer);
glBindRenderbuffer(GL_RENDERBUFFER, _renderBuffer);
结果是旧图像没有被清除和显示。结果如下所示:http://d.pr/i/M02z这是正常的吗?难道不应该清除旧环境并重新开始吗?
我在更新时尝试了 glFlush();
并尝试在 glkView:(GLKView *)view drawInRect:(CGRect)rect
中尝试为图像绘制 nil CIContext 无济于事。
有什么我想念的吗?
最佳答案
您将需要使用如下代码清除您的帧缓冲区之前的内容
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
在绘制新的 Core Image 框架之前的某个时刻。这会将帧缓冲区的内容和 alpha channel 设置为 0.0,为您提供一个干净的平台来绘制过滤后的图像。
您可能还需要使用类似
的方式设置当前的 OpenGL ES 上下文[EAGLContext setCurrentContext:self.openGLESContext];
就在这之前,因为我不记得 Core Image 是否会为您正在处理的任何线程正确保留该设置。
关于ios - GLKView + CIImage with Alpha + AVFoundation = Trippy Mess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11267367/
所以...这是我第一次弄乱函数,几乎从未使用过 for ,我想创建一个函数,它打印 hello 的次数与参数 ( n) 表示。 #include int say_hello(int n){
今天早上我陷入了困境,不得不创建一个分支来恢复到我上次提交的状态。现在 master 分支一团糟,我唯一感兴趣的是这个带有恢复的新分支。我如何强制 master 与还原的分支相同? 最佳答案 git
我对 C++ 的内部工作原理有一些疑问。例如,我知道一个类的每个成员函数都有一个隐含的隐藏参数,即 this 指针(与 Python 的做法非常相似): class Foo { Foo(con
我试图在不同的类上使用单独的 CSS LINK 样式。当我在链接上“悬停”时,链接会乱七八糟。我该如何解决这个问题,以便当我将鼠标悬停在链接上时不会显示不同的 css 样式? 这是相关的 CSS。 .
我的 index.php 文件开头有这段代码: if ( !isset($_GET['cat']) ) die(header("Location: ?cat=top")
我的 Zend_Json 在编码一个对象时搞砸了。我正在编码一个包含两个元素的关联数组:元素 1 是另一个关联数组,而元素 2 是 HTML 字符串。他搞砸了,以至于 Html 字符串部分只包含 NU
我是一名编码员(我使用的是 Mac),我使用的计算机是一台“不应该被弄乱”的计算机。我想安装一些命令行程序,但我希望能够以某种方式删除我所做的一切。 我知道,我不应该做任何以防万一的事情。 但是,我想
此代码旨在循环遍历所有结果页面,然后循环遍历每个页面上的结果表,并从表中抓取所有数据以及表外部存储的一些信息。 但是,生成的 CSV 文件似乎没有任何合理的组织,每行的不同列中都有不同类别的信息。我所
我是 SwipeListView 库的新手,当滑动列表项之一时,该功能的工作原理如下: 应用程序正在运行,但 View 困惑,以至于隐藏的内容(即滑动列表项后看到的内容)被覆盖在每个列表项的顶部。按照
在我做的元素中,我希望用户能够上传图片。这些图片必须按照从首次上传到最后上传的顺序排列。 看看下面的代码: body{ color:white; } #wrap{ margin-top:10px; o
我试图将搜索栏置于页脚的中央。使用以下解决方案后:[https://stackoverflow.com/questions/19733447/bootstrap-navbar-with-left-ce
我正在尝试将几个文件连接在一起并添加标题。 import subprocess outpath = "output.tab" with open( outpath, "w" ) as outf :
下面是我的 Debian Wheezy 工作站上 Oracle 的 JavaFX“Hello World”示例的屏幕截图的两个链接。 第一个是用 JDK6u67 和 1.7 目标构建的,并用相应的 J
在我的 iPhone 应用程序中,我使用 NSDecimalNumber 来存储一些货币汇率值。我在应用程序第一次启动时从网络上提取数据,然后在它们过时时再次提取数据,并将它们存储在 NSDictio
由于某种原因,我遇到了麻烦,但我似乎不知道如何解决...我正在做一个测验,它以开始按钮开始,并有“下一个”和“上一个”按钮。当我点击开始按钮时,问题 1 和答案 1 将会出现,开始按钮消失,当我然后点
我正在查看应用程序见解并调查性能问题: -> 应用程序洞察 -> 性能 -> 选择操作 -> 探查器跟踪 屏幕左侧该操作的持续时间为(7462.45 毫秒),而该操作的事件的总持续时间为(15509.
我正在查看应用程序见解并调查性能问题: -> 应用程序洞察 -> 性能 -> 选择操作 -> 探查器跟踪 屏幕左侧该操作的持续时间为(7462.45 毫秒),而该操作的事件的总持续时间为(15509.
我正在使用 java 泛型,我想避免类头中出现困惑。 // The car saves a generic list class Car{ ArrayList exampleList=new Arr
我只是在玩数组,我在 Emacs (OSX) 中编写了这个小东西,当我尝试运行它时遇到了 Bus error: 10。我不知道为什么会这样,也许有人可以告诉我... #include int mai
所以我在使用 jquery 放置悬停工具提示时遇到了一点问题 - 如果我的父 div 的 css 中的“位置”属性设置为“相对”,则工具提示会飞到屏幕的左上角。如果我删除 position 属性,那么
我是一名优秀的程序员,十分优秀!