问题标签 [eaglcontext]
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.
paint - CGmutuablePath 和 GLPaint
参考这个问题:OpenGL ES Fill Effect 我正在尝试做同样的事情,但我有自定义 UIView,它包含不同的 CGMutuablePath 并且在选定的 UIView 中只启用了绘图。
我使用了 GLPaint、PaintingView 类并将其用作自定义类,甚至可以绘制不同的路径,一切正常。除了我也需要填充这些路径。当他的用户想要使用桶油漆效果时。当我使用定义的 CG 闭合路径时,是否可以使用 EAGLContext 填充这些路径。我尝试了多种方式来用 CGContextRef 填充它,但它总是以 "Invalid context" 结束,我想它不可能在单个视图中使用 2 个不同的上下文。
任何机构都可以帮我解决这个问题吗?如何使用 EAGLContext 填充我的路径?
ios - -[EAGLContext renderbufferStorage:fromDrawable:] 第二次失败?
我正在开发一个 iOS openGL ES 应用程序。
我正在做通常的 EAGLView / ES2Render 的东西。
启动时,frambuffer 创建成功,使用以下代码:
不久之后,UIView
's-layoutSubviews
被调用,我依次执行-resizeFromLayer:
:
我所做的一切都没有什么特别的。我有一个单独的帧缓冲区来渲染场景转换,有两个纹理可以附加到颜色和深度上。
第二次-renderbufferStorage:fromDrawable:
调用(-layoutSubviews
-> resizeFromLayer:
),它总是失败(返回NO
);在此之前调用glGetError()
不会导致错误,但在返回之后立即调用它GL_INVALID_OPERATION
。如果我忽略这一点并继续,glGetRenderbufferParameteriv()
仍然会得到正确的宽度和高度(在 iPhone 5 上分别为 640 和 1136),但glCheckFramebufferStatus()
会返回GL_FRAMEBUFFER_UNSUPPORTED
.
或者,我跳过了上面的resizeFromLayer:
内容并将其替换为:
...但同样的错误仍然存在(-renderStorage:fromDrawable:
失败;这次在里面-createFramebuffers
)。
现在,我刚回来YES
(我的应用只支持纵向,所以实际上没有发生屏幕尺寸变化),但我真的很想修复它,因为有一天我需要支持横向等......
ios - 展开模态视图后,EAGLContext currentContext 为 nil
这不是一个真正的问题,因为我知道如何解决它,但我只是好奇。下面是我的故事板的屏幕截图。它相当简单,它最初加载一个主菜单,其中有一个按钮,通过模态 segue 加载 UIView。该 UIView 包含一个容器视图控制器,该控制器具有一个导航控制器,其根视图控制器是 GLKViewController。有两种方法可以返回主菜单。首先,您可以点击暂停按钮,将暂停视图控制器推到 OpenGL 视图控制器的顶部,然后点击那里的返回菜单按钮,触发展开转回主菜单。或者,您可以等待计时器降至零并让您的游戏结束,此时游戏通过视图控制器通过 segue 显示,然后你可以从那里放松回到主菜单。该故事板的屏幕截图链接如下:
http://i.stack.imgur.com/2LKVQ.png
您可能会注意到我有两个连接到游戏的视图控制器。最初,我使用模态 segue 来显示该视图控制器。一切正常,除了当我解开到主菜单然后尝试开始一个新游戏时,[EAGLContext currentContext] 等于 nil,我以以下方式将其加载到我的 GLKViewController 子类的 viewDidLoad 中。
没什么大不了的,起初我的嵌入式 GLKViewController 只是画了一个黑屏,但是当我弄清楚发生了什么时,这只是意味着我必须重新加载我之前加载到旧的所有缓冲区/纹理/着色器/等上下文并已缓存以备将来使用。但是,如果我通过暂停菜单或在切换到通过 push segue 呈现游戏视图之后从 push segue 中解开,[EAGLContext currentContext] 不是 nil,而是与我初始化的上下文相同我第一次加载 GLKView。因此,我可以使用所有缓存的缓冲区/纹理/着色器/等,而不必重新加载它们。
做一些阅读,我不确定为什么从模态转场展开会删除当前上下文,而从推送转场中展开不会。通过阅读我的理解是,每个线程都维护自己的 EAGLContext,无论我设置视图控制器 segues 的哪种方式,我总是留在主线程上。我很好奇是否有人知道为什么会发生这种情况。
ios - 带有核心图像过滤器的 EAGLContext
我想将图像实时添加到相机视频源中,但只需要显示它们,无需保存。如果我使用标准核心图像程序,它可以正常工作,但我需要更高的帧速率。但是,如果我取消注释此代码并在下一个注释它不会。OpenGLView
只是一个UIView
带有方法的子类
什么不见了?我做错了什么?非常感谢。
ios - 在许多 EAGLContext 之间切换的成本?
我正在处理一些具有网格视图的代码(一次在屏幕上显示约 20 个子视图)。每个子视图在 GL 中绘制其内容,并有自己的绘制线程和 EAGLContext。
这样做的好处是每个视图都与应用程序中的其他 GL 使用相对隔离,尽管屏幕上有 20 个这样的视图,我们必须每帧 glFlush+setCurrentContext: 20 次。我的直觉告诉我,这不是 GL 最有效的用法。
我的问题:
- 切换上下文的成本是多少?
- 必须为每个上下文执行 glFlush 实际上会减慢它的速度,还是 glFlush 只会停止当前上下文?
ios - 处理 handleScreenDidConnectNotification 时是否应该重新创建 EAGL 上下文?
我正在尝试处理 iOS 中的 handleScreenDid(Dis)ConnectNotification。我遇到的问题是,在处理handleScreenDidConnectNotification 2 帧后,我的应用程序中的非特定glFunctions() 出现GL_INVALID_FRAMEBUFFER_OPERATION 错误。
我已经从通知中删除并重新创建了我的帧缓冲区和渲染缓冲区(因为显然分辨率正在改变)。但不是 EAGLContext。
我的问题是:我是否需要在处理通知时释放/删除 EAGLContext* 并且我想也删除然后重新创建我的所有 gl 资源?
ios - EAGLContextView renderbufferstorage:fromDrawable: failing frequently on ios8
The documentation does not list out the possible reasons for failure. It would be great if I can get any of the following
- Reasons for failure
- Replacement for the API using glRenderBufferStorage.
opengl-es - iOS EAGLContext presentRenderBuffer 块
我观察到在 iOS 8 上,有时我的应用程序在启动时阻塞 (_semwait_signal),同时调用 [_oglContext presentRenderbuffer:GL_RENDERBUFFER] 并在几秒钟后清除,尤其是在 iPhone 4S 等旧设备上。需要知道什么会导致 presentRenderbuffer 挂起?有任何想法吗。这仅在 iOS 8 上发生。
ios - 了解 OpenGL ES 内容何时在 iOS 上实际显示
当在 CAEAGLLayer 中使用带有渲染缓冲区存储的 EAGLContext 时,在调用 presentRenderbuffer 之后,
1)缓冲区的出现是否与竖屏刷新同步?2) 如何获取包含更改的垂直扫描开始的时间戳?
ios - EAGLContext presentRenderbuffer 在第二个线程上?
我正在将我的游戏引擎移植到 iOS 并在我的 [EAGLContext presentRenderbuffer:] 调用中遇到异常。我的引擎将所有渲染代码放在与主线程不同的线程上;引擎通过在主线程上创建 CAEAGLLayer 和 EAGLContext 来工作,激活上下文并为视图创建帧缓冲区,然后停用上下文。之后,对于每一帧,我的渲染线程都会激活上下文,绑定帧缓冲区,绘制,最后呈现渲染缓冲区。
是否可以在辅助线程上调用 presentRenderbuffer:,或者这是我的问题的原因?