问题标签 [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.

0 投票
1 回答
114 浏览

paint - CGmutuablePath 和 GLPaint

参考这个问题:OpenGL ES Fill Effect 我正在尝试做同样的事情,但我有自定义 UIView,它包含不同的 CGMutuablePath 并且在选定的 UIView 中只启用了绘图。

我使用了 GLPaint、PaintingView 类并将其用作自定义类,甚至可以绘制不同的路径,一切正常。除了我也需要填充这些路径。当他的用户想要使用桶油漆效果时。当我使用定义的 CG 闭合路径时,是否可以使用 EAGLContext 填充这些路径。我尝试了多种方式来用 CGContextRef 填充它,但它总是以 "Invalid context" 结束,我想它不可能在单个视图中使用 2 个不同的上下文。

任何机构都可以帮我解决这个问题吗?如何使用 EAGLContext 填充我的路径?

0 投票
3 回答
5801 浏览

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(我的应用只支持纵向,所以实际上没有发生屏幕尺寸变化),但我真的很想修复它,因为有一天我需要支持横向等......

0 投票
0 回答
1249 浏览

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 的哪种方式,我总是留在主线程上。我很好奇是否有人知道为什么会发生这种情况。

0 投票
1 回答
1434 浏览

ios - 带有核心图像过滤器的 EAGLContext

我想将图像实时添加到相机视频源中,但只需要显示它们,无需保存。如果我使用标准核心图像程序,它可以正常工作,但我需要更高的帧速率。但是,如果我取消注释此代码并在下一个注释它不会。OpenGLView只是一个UIView带有方法的子类

什么不见​​了?我做错了什么?非常感谢。

0 投票
2 回答
453 浏览

ios - 在许多 EAGLContext 之间切换的成本?

我正在处理一些具有网格视图的代码(一次在屏幕上显示约 20 个子视图)。每个子视图在 GL 中绘制其内容,并有自己的绘制线程和 EAGLContext。

这样做的好处是每个视图都与应用程序中的其他 GL 使用相对隔离,尽管屏幕上有 20 个这样的视图,我们必须每帧 glFlush+setCurrentContext: 20 次。我的直觉告诉我,这不是 GL 最有效的用法。

我的问题:

  • 切换上下文的成本是多少?
  • 必须为每个上下文执行 glFlush 实际上会减慢它的速度,还是 glFlush 只会停止当前上下文?
0 投票
0 回答
141 浏览

ios - 处理 handleScreenDidConnectNotification 时是否应该重新创建 EAGL 上下文?

我正在尝试处理 iOS 中的 handleScreenDid(Dis)ConnectNotification。我遇到的问题是,在处理handleScreenDidConnectNotification 2 帧后,我的应用程序中的非特定glFunctions() 出现GL_INVALID_FRAMEBUFFER_OPERATION 错误。

我已经从通知中删除并重新创建了我的帧缓冲区和渲染缓冲区(因为显然分辨率正在改变)。但不是 EAGLContext。

我的问题是:我是否需要在处理通知时释放/删除 EAGLContext* 并且我想也删除然后重新创建我的所有 gl 资源?

0 投票
0 回答
473 浏览

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

  1. Reasons for failure
  2. Replacement for the API using glRenderBufferStorage.
0 投票
0 回答
549 浏览

opengl-es - iOS EAGLContext presentRenderBuffer 块

我观察到在 iOS 8 上,有时我的应用程序在启动时阻塞 (_semwait_signal),同时调用 [_oglContext presentRenderbuffer:GL_RENDERBUFFER] 并在几秒钟后清除,尤其是在 iPhone 4S 等旧设备上。需要知道什么会导致 presentRenderbuffer 挂起?有任何想法吗。这仅在 iOS 8 上发生。

0 投票
0 回答
40 浏览

ios - 了解 OpenGL ES 内容何时在 iOS 上实际显示

当在 CAEAGLLayer 中使用带有渲染缓冲区存储的 EAGLContext 时,在调用 presentRenderbuffer 之后,

1)缓冲区的出现是否与竖屏刷新同步?2) 如何获取包含更改的垂直扫描开始的时间戳?

0 投票
2 回答
1171 浏览

ios - EAGLContext presentRenderbuffer 在第二个线程上?

我正在将我的游戏引擎移植到 iOS 并在我的 [EAGLContext presentRenderbuffer:] 调用中遇到异常。我的引擎将所有渲染代码放在与主线程不同的线程上;引擎通过在主线程上创建 CAEAGLLayer 和 EAGLContext 来工作,激活上下文并为视图创建帧缓冲区,然后停用上下文。之后,对于每一帧,我的渲染线程都会激活上下文,绑定帧缓冲区,绘制,最后呈现渲染缓冲区。

是否可以在辅助线程上调用 presentRenderbuffer:,或者这是我的问题的原因?