4

我对 Apples EAGLView 和 Texture2D 有一点问题。如果我创建一个 EAGLView 实例并绘制一些纹理,它会很好用。但是,每当我创建 EAGLView 的第二个实例时,都不会绘制新视图中的纹理。
作为 OpenGL 的新手,我现在完全知道是什么导致了这种行为。如果有人愿意提供帮助,我创建了一个重现该行为的小项目。该项目可以在http://www.cocoabeans.se/OpenGLESBug.zip找到

非常感谢,
蒂姆安德森

更新
我尝试使用共享组,但我不确定我是否正确使用它们。但是,它确实稍微改变了行为;而不是仅在第一个实例化视图中绘制纹理,它现在在最后一个实例化视图中绘制纹理并在其他视图中绘制白色矩形。我不知道这是好是坏,但至少现在其他视图中出现了一些东西。
这让我发疯,如果有人能帮助我解决这个问题,我将不胜感激。我已经在http://www.cocoabeans.se/OpenGLESBug.zip更新了项目以反映这些变化。

干杯,
蒂姆

第二次更新
在尝试了更多的事情之后,似乎问题与 Apple 的 Texture2D 类有关,但我不确定究竟是什么导致了这种行为。我认为最好的办法是编写我自己的纹理类(它将帮助我理解 OpenGL 如何处理纹理,这可能会派上用场)。

4

1 回答 1

1

(尚未下载您的代码。)

如果您只使用两个 EAGLView(该基类中的代码创建并拥有 GL 上下文以及渲染/帧/深度缓冲区),则 OpenGL 绘图上下文会有所不同。如果您在一个上下文中生成/绑定某些纹理,则它们在另一个上下文中将不可用。如果您喜欢使用共享组,您可以共享上下文(有关更多信息,请参阅此问题:How to use OpenGL ES on a separate thread on iphone?)。或者在两个地方定义纹理(如果很小),等等。

于 2010-02-17T01:37:33.063 回答