问题标签 [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.
iphone - EAGLContext、EAGLSharegroups、RenderBuffers、FrameBuffers,天哪!
我正试图围绕 iPhone OS 上的 OpenGL 对象模型展开思考。我目前正在屏幕上渲染成几个不同UIView
的 s (build on s)。CAEAGLayer
我目前将这些中的每一个都使用为单独EAGLContext
的,每个都有一个颜色渲染缓冲区和一个帧缓冲区。
我在其中渲染了类似的东西,我想在这些实例之间共享纹理以节省内存开销。
我目前的理解是我可以使用相同的设置(一些上下文,每个上下文都有一个 FBO/RBO)但是如果我使用EAGLShareGroup
第一个生成后面的,那么我可以简单地使用纹理名称(GLuints)后面的第一个。这是准确的吗?
如果是这种情况,我想接下来的问题是:让它成为“共享组”有什么好处?我可以重复使用相同的上下文,并将多个 FBO/RBO 附加到该上下文吗?我想我正在努力处理共享组的抽象层,它似乎共享“对象”(纹理和其他命名的东西),但不共享上下文拥有的“状态”(矩阵、启用/禁用状态)。
思考这个问题的最佳方式是什么?
感谢您的任何启发!
iphone - 在游戏中使用 UIImagePickerController
我想制作一个游戏,用户可以在其中触摸电视图片,然后从他们的照片库中选择一张图片。
我成功使用 UITextFields,将它们作为子视图添加到我的 EAGLView 但我无法用 UIImagePickerController 做同样的事情,这似乎是做我想做的事情的唯一方法。
任何帮助表示赞赏!
更新
在 zpasternack 的建议下,我设法通过添加 UIImagePickerControllerDelegate、UINavigationControllerDelegate 并使用此方法使菜单出现:
我在开始时调用了 chooseImageFromLibrary 方法。它显示了界面,但是一旦我点击取消或选择应用程序就会停止。
任何人都可以建议我:
1) 如何使取消和选择按钮起作用。2)如何随时调用 UIImagePickerController(再次调用 chooseImageFromLibrary ??)。3)当用户点击选择时。我在哪里可以找到用户刚刚选择的 UIImage?,我该如何选择它?
谢谢。
performance - 多个 GLES 上下文,一个帧缓冲区 (iOS)
我正在做一个 iOS 应用程序,其中我有一个黑盒渲染库,它有自己的 EAGLContext 和帧缓冲区,并进行自己的渲染。我还需要在黑盒库之外进行额外的渲染。
到目前为止,我一直在通过仔细阅读、设置和恢复每一帧的所有相关状态来做到这一点。这有效,但繁琐且难以维护。然后我突然想到,“为什么不使用单独的 EAGLContext 呢?”
我已经实现了第二个上下文,所以现在我正在切换上下文,而不是设置/恢复每帧的所有状态。唯一的问题是我得到了很多视觉伪像,性能从坚如磐石的 30 FPS 到大约 5 FPS...
因此,显然我不打算从多个上下文渲染到同一个帧缓冲区。谁能证实这一点?
objective-c - 顶点数组对象 (VAO) 可以在 OpenGL ES 中跨 EAGLContext 共享吗?
剧透:我相当有信心答案是NO
,但这只是在经过一天非常沮丧的调试之后。现在我想知道是否确实如此(如果是这样,我可能怎么知道),或者我是否只是在做完全错误的事情。
这是情况。我正在使用 OpenGL ES 2.0 来渲染从各种文件(.obj、.md2 等)加载的一些网格。为了性能和用户体验,我将这些网格及其相关纹理的实际加载委托给使用 GCD 的后台线程。
根据Apple 的 说明shareGroup
,在每个后台线程上,我创建并设置了一个与主渲染上下文相同的新 EAGLContext 。这允许在后台线程上创建的 OpenGL 对象(如纹理和缓冲区对象)立即被主线程上的上下文使用。
这一直很顺利。现在,我最近了解到顶点数组对象是一种缓存与渲染某些缓冲区内容相关的 OpenGL 状态的方法。它看起来不错,并减少了渲染每个网格所需的样板状态检查和设置代码。最重要的是,Apple 还建议在其使用顶点数据的最佳实践指南中使用它们。
但是我在让 VAO 为我工作时遇到了严重的问题。就像我处理所有加载一样,我会将网格从文件加载到后台线程的内存中,然后生成所有关联的 OpenGL 对象。毫无疑问,当我第一次尝试glDrawElements()
使用 VAO 调用时,应用程序崩溃并显示EXC_BAD_ACCESS
. 没有VAO,它渲染得很好。
调试EXC_BAD_ACCESS
很痛苦,尤其是当 NSZombies 没有帮助时(他们显然不会),但是在分析捕获的 OpenGL 帧一段时间后,我意识到,虽然在后台线程上创建 VAO 很顺利(不GL_ERROR
,和非零 id),当绑定到主线程上的 VAO 时,我会得到一个GL_INVALID_OPERATION
,当尝试绑定到不存在的 VAO 时,文档状态会发生。果然,在渲染时查看当前上下文中的所有对象时,看不到一个 VAO,但是在同一时间使用 VAO 生成的所有 VBO都存在。如果我在主线程上加载 VAO,它工作正常。非常令人沮丧。
我将加载代码提炼成更原子的形式:
当上述在后台线程上执行时,与主上下文EAGLContext
相同的有效shareGroup
,主上下文将有4个VBO,但没有VAO。如果我在主线程上使用主上下文执行它,它将有 4 个 VBO 和 VAO。EAGLContext
这使我得出结论,在处理 VAO 时,s 的对象共享性质存在一些奇怪的例外。如果情况确实如此,我真的希望 Apple 文档在某处注意到这一点。不得不手动发现这样的小花絮非常不方便。是这样吗,还是我错过了什么?
iphone - 跨不同的 ViewControllers/EAGLViews 使用相同的 EAGLContext
我在使用相同的 cross 时遇到了一些EAGLContext
问题EAGLViews
。我有两个视图控制器,每个都有一个EAGLView
.
每个 View Controller 分配一个新的EAGLContext
,并为每个各自创建一个后续的 framebuffer/colorbuffer EAGLView
,但这很浪费内存资源。
我知道可以EAGLContext
通过简单地将不同的帧缓冲区/颜色缓冲区绑定到不同的视图控制器来使用相同的EAGLViews
:
但到目前为止我还没有做到这一点。
有任何想法吗?
提前致谢。
opengl-es - CoreImage:EAGLContext 帧缓冲区或渲染缓冲区配置不正确
当我设置 GLKViewController/GLKView 以使用 CoreImage 进行绘图时,有时我会在标题中看到通知。
设置如下所示:
我在 GLKView 中有 UIKit 子视图,似乎当我添加/删除视图时,它以某种方式暂时使上下文无效。问题是(除了在极少数情况下我仍然需要角落)我可以在上下文中毫无问题地绘制下一个更新。
如果绘图失败,我可以重试绘图,但我怎么知道上下文无效?我应该如何检测它或防止它失效?
ios - ios如何在EAGLContext中绘制UIImage?
我正在做一个“手指绘图应用程序”。我正在使用 Apple 的示例 [此处][1]。
但我想添加一个撤消选项。为了做到这一点,每次应用程序处理触摸事件的结束时,我都会将 EAGLContext 内容保存到图像中。
当我想绘制以以下方法保存的最后一张图像时,问题就来了:
}
但是没有绘制图像,并且有一个控制台输出显示:
我相信上下文有问题,但我似乎无法弄清楚。
谢谢
objective-c - Xcode 截图 EAGLContext
可能重复:
如何从 EAGLView 获取 UIImage?
所以我只是想知道是否有人知道将存储在 EAGLContext 中的内容保存为 UIImage 的任何方法。
我目前正在使用:
在我拥有的其他应用程序中,这工作正常,但显然,EAGLContext 没有 .layer 属性。我已经尝试投射到 UIView,但是这 - 不出所料 - 不起作用:
我正在使用 OpenGLES 1 绘制 UIView 上的 EAGLContext 属性(技术上是视图控制器上另一个 UIView 上的 UIView 上的 EAGLContext,但我认为这不应该有任何区别)。
如果有人对此有所了解,即使只是我完全在吠叫一棵不可能的树,也请告诉我!
马特
iphone - GLKViewController (GLKView) glReadPixels 在 iO6 之后返回黑色像素
我将 GLKViewController 与 GLKView 一起使用,在 ios5 上工作正常,在 io6 更新 glReadPixels 停止工作后,只返回黑色像素。
我读了一些关于preserveBackBuffer的东西,但是还没有成功
我的 GLKView 设置:
可能的解决途径?(我在这里尝试但仍然无法正常工作)
我在着色器处理后使用 glReadPixels 记录相机
接受所有帮助,谢谢,
ios - UIScrollView 具有多个 GLPaint 的绘图视图作为子视图;屏幕截图
我有一个UIScrollView
, 具有多个可绘制视图作为子视图。我正在使用 Apple 的 GLPaint 代码。我的问题是当我捕获UIScrollView's
内容以形成一个UIImage
时,我的绘图视图的状态没有被捕获。下面是我用于捕获的代码。
谁能帮我解决这个问题?
谢谢!!