我有一个连接到摄像机的GPUImageView对象。 当我添加子视图。子视图显示毫秒,然后消失。 我认为它是由下一个视频帧重绘的!
我在网上搜索没有结果!然后我看了GPUImageView继承:
mac上的GPUImageView继承自NSOpenGLView,所以我寻找如何在NSOpenGLView上添加子视图。 Apple提供了如何执行此操作的示例,它在此处称为LayerBackedOpenGLView链接:https://developer.apple.com/library/mac/samplecode/LayerBackedOpenGLView/Introduction/Intro.html。
他们使用: [openGLView setWantsLayer:YES]; 这使得subview apear但是在GPUImageView(来自摄像头的视频流)中消失了,并且变得有些混乱。
Apple提到:启用NSOpenGLView的“wantsLayer”属性可激活图层支持的渲染 OpenGL视图。图层支持的渲染模式使用自己的NSOpenGLContext,它与之不同 视图用于在非图层支持模式下绘制的NSOpenGLContext。 AppKit,在工作 与CoreAnimation的Concert,自动创建此上下文并将其分配给视图。
我是Mac上的新手,不知道OpenGL,所以也许我做错了什么或错过了什么。我需要一种在GPUImageView上添加子视图的方法。
我的问题是: 如何在GPUImageView对象(在MAC上)添加子视图,条件是:
答案 0 :(得分:0)
添加图层与添加子视图不同。如果要在GPUImageView上显示某些内容,则需要使用方法-addSublayer(在GPUImageView的原始图层上调用)向GPUImageView添加图层,然后将其他内容绘制到此图层。
要显示视频供稿,如果您的视频来自AVCapture,则可以使用预先制作的AVCaptureVidoPreviewLayer。
另一种解决方案是让您的视频Feed和GPUImageView属于同一个超级视图,然后在超级视图中处理两个视图的布局。