问题标签 [caeagllayer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 如何在应用程序后台停止并发 OpenGL 绘图?
一旦应用程序进入后台,它必须停止调用 OpenGL 函数。但不知何故,阻止 OpenGL 的所有努力都失败了,当用户按下主页按钮时,我的应用程序经常(但不总是)崩溃。
它崩溃了
异常类型:EXC_BAD_ACCESS 代码:KERN_INVALID_ADDRESS at 0x1 libGPUSupportMercury.dylib gpus_ReturnNotPermittedKillClient
据我了解,如果您在应用程序不在前台之后调用 OpenGL 函数,应用程序将崩溃,因为 GPU 对应用程序不可用。
用 OpenGL 渲染的视图有一个调度队列
它必须与 UIScrollView 并行渲染。所以有一个 GCD信号量让队列等待 UIScrollView。
我创建了一个 CADisplayLink 来更新运行循环:
update 方法在串行渲染队列上异步执行绘图计算,并使用信号量等待 UIScrollView。它最终在主线程上提交同步。
update 方法检查主线程是否可以渲染。检查如下所示:
我最怀疑的一件事是暂停队列的并发问题。因为它是异步的,所以即使在我停止显示链接之后也会触发该块。
所以我认为缺少的是,在我调用这个异步块中的任何 OpenGL 函数之前,我还必须检查 -canRender:
好的,但现在想象我在渲染运行循环开始时进行此检查。-canRender
说是的。然后我打电话[sprite drawState:state];
。这个方法调用了很多 gl 函数。我认为这是根本问题。因为即使我的异步阻塞检查主线程是否应用程序仍在前台,当我继续异步执行复杂绘图 3 纳秒后应用程序可能处于后台状态和崩溃。
因此,即使我在每个 gl 函数调用之前检查主线程上的 -canRender ,也可能是一个拆分纳秒后的应用程序处于后台并崩溃。
有没有办法从内到外关闭 OpenGL,以便它忽略对其函数的调用。我听说过一种整理方法。我将不得不关闭它。但是怎么做?
ios - 带有核心图像过滤器的 EAGLContext
我想将图像实时添加到相机视频源中,但只需要显示它们,无需保存。如果我使用标准核心图像程序,它可以正常工作,但我需要更高的帧速率。但是,如果我取消注释此代码并在下一个注释它不会。OpenGLView
只是一个UIView
带有方法的子类
什么不见了?我做错了什么?非常感谢。
ios - Open GL ES 2.0 renderbufferStorage 返回 false
我正在尝试创建一个帧缓冲区以在我的 iOS 应用程序中显示 3D 模型,但是当创建帧缓冲区时,渲染缓冲区存储返回 false。我的代码基于 GLCameraRipple 示例代码。
创建帧缓冲区的代码如下:
任何帮助将不胜感激。
提前致谢。
ios9 - CAEAGLLayer - OpenGL API 在 Siri 输入后无效
我在 iOS 9 beta 5 上看到了一些非常有趣的行为。当使用 Siri 向 UITextView 说出字符串时,我所有针对我的 CAEAGLLayer 的 OpenGL 调用都不再起作用。渲染代码并没有什么异常,只是一旦使用了语音听写,它们似乎就不再有效果了。
有没有其他人在 iOS 9 beta 版本中遇到过这种情况?
ios - 多个 OpenGL 视图如何在 iOS 中共享单个 GL_RENDERBUFFER
假设我有两个视图需要在 renderBuffer 中呈现相同的 OpenGL 内容。如何将这两个视图绑定CAEAGLLayer
到 renderBuffer?renderbufferStorage:fromDrawable:
只需将最后一个绑定CAEAGLLayer
到GL_RENDEARBUFFER
.
ios - 使用带有 GLKit 的 glReadPixels 获取空缓冲区
在我正在开发的 OpenGL ES 应用程序中,当我使用 glReadPixels 获取像素但缓冲区为空时。现在我不知道我的代码有什么问题。感谢您的帮助。
上面的示例代码只是显示纹理的一部分,它工作正常。renderBuffer 和 framebuffer 是我班级的财产。示例在这里获取像素代码,使用 glReadPixels 后缓冲区为空?有什么我错过的设置吗?