我在使用Apple EAGLView 和Texture2D 时遇到了一些问题。如果我创建 EAGLView 的实例并绘制一些纹理,效果会很好。但是,每当我创建 EAGLView 的第二个实例时,都不会绘制新视图中的纹理。
作为 OpenGL 的新手,我现在已经完全了解导致此行为的原因。如果有人愿意提供帮助,我创建了一个小项目来重现该行为。该项目可以在以下位置找到:http://www.cocoabeans.se/OpenGLESBug.zip http://www.cocoabeans.se/OpenGLESBug.zip
非常感谢,
蒂姆·安德森
Update
我尝试使用共享组,但我不确定我是否正确使用了它们。然而,它确实稍微改变了行为;现在,它不再仅在第一个实例化视图中绘制纹理,而是在last实例化视图并在其他视图中绘制白色矩形。我不知道这是好是坏,但至少某物现在出现在其他视图中。
这让我发疯,如果有人能帮助我解决这个问题,我将非常感激。我已经更新了该项目http://www.cocoabeans.se/OpenGLESBug.zip http://www.cocoabeans.se/OpenGLESBug.zip以反映变化。
Cheers,
Tim
第二次更新
在尝试了更多的事情之后,问题似乎与Apple的Texture2D类有关,尽管我不确定到底是什么导致了这种行为。我认为最好的办法是编写自己的纹理类(它将帮助我理解 OpenGL 如何处理纹理,这可能会派上用场)。
(尚未下载您的代码。)
如果您只使用两个 EAGLView,则 OpenGL 绘图上下文会有所不同(该基类中的代码创建并拥有 GL 上下文以及渲染/帧/深度缓冲区)。如果您在一个上下文中生成/绑定某些纹理,它们将在另一个上下文中不可用。如果您喜欢使用共享组,您可以共享上下文(有关更多信息,请参阅此问题:如何在 iPhone 上的单独线程上使用 OpenGL ES? https://stackoverflow.com/questions/1253145/how-to-use-opengl-es-on-a-separate-thread-on-iphone)。或者在两个地方定义纹理(如果很小),等等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)