我有一个在iPad上运行的应用程序,它使用大量的纹理,渲染成一个EAGLView。现在我需要第二个EAGLView,与第一个共享纹理。多个EAGLViews,但每个纹理只有一个副本 - 如何?
通过修复Apple代码中的一些设计错误(例如,默认ViewController需要一些调整来支持多个子EAGLView对象),我可以同时在屏幕上同时呈现两个视图并行渲染。但我无法获得共享的纹理。
我不能复制纹理(这会增加内存使用量 - 而且我们已经使用了大部分内存)。
我找不到任何有关如何在多个EAGLView之间共享纹理的文档 - 有“提示”这是EAGLShareGroup的用途,允许每个GLView都有自己的上下文,但要共享两个上下文一个ShareGroup - 但没有明确说明我能找到。
我试着回答这个问题如下:Textures not drawing if multiple EAGLViews are used
...但它是不是一个真正的答案。它指出EAGLSharegroup没有真正解释如何使用它 - 它似乎没有任何区别。它也间接地指出了一个关于从多个线程渲染的页面 - 这是一个完全不同的问题,并且我没有列出任何问题(应用程序崩溃等)。
为什么 - [EAGLSharegroup init]没有记录是因为你没有写信给它。第二种用法是[EAGLContext initWithAPI:sharegroup:]是正确的方法。 – Frogblast
在此说明中,上面描述的过程在适用于iOS的OpenGL ES编程指南中有关OpenGL ES上下文的部分以及正确处理跨上下文同步的注释中进行了描述:http://developer.apple。 com/library/ios/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/WorkingwithOpenGLESContexts/WorkingwithOpenGLESContexts.html#// apple_ref/doc/uid/TP40008793-CH2-SW5 – Pivot
非常好,谢谢。 “列表2-2创建具有共同共享组的两个上下文”是我无法找到的一点。虽然我注意到苹果公司的列表中包含一个不存在的“CreateBestEAGLContext()”方法是没有帮助的 - 但他们可以更好地描述我的想法。 – Adam