【问题标题】:Textures not displaying - Cocos2D 2.0 Alpha纹理不显示 - Cocos2D 2.0 Alpha
【发布时间】:2025-12-26 03:10:06
【问题描述】:

我知道 Cocos2d 2.0 处于 alpha 阶段,显然会有一些问题。出于多种原因,我正在尝试将多个项目转换为使用 OpenGL 2.0,但遇到了一个非常奇怪的问题。

当我启动一个场景时,我的纹理会根据需要加载,并且一切正常。然后我会显示一些允许我退出场景的 Apple UI 元素。场景及其视图控制器被释放,导演被告知结束,我返回另一个视图。然后我按下 UIButton 再次启动场景。场景重新开始并运行,但看不到任何纹理。字体加载和显示,音频加载和播放,但纹理不可见。从 CCTextureCache 转储信息时,我可以看到所需的纹理在缓存中可用( [[CCTextureCache sharedTextureCache] dumpCachedTextureInfo] )。我还尝试在重新启动场景之前清除缓存。无论如何,我看不到任何纹理或向场景添加节点。

我如何重置场景或如何设置 EAGLView 可能有问题。这是从视图控制器启动所述场景的代码:

(void)startGame {

CCDirector *director = [CCDirector sharedDirector];
EAGLView *glView = [EAGLView viewWithFrame:[self.view bounds]];

[director setOpenGLView:glView];

[self setView:glView];
[[CCTextureCache sharedTextureCache] removeUnusedTextures];
//[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
[[CCDirector sharedDirector] runWithScene:[Cocos2DChipmunkScene scene]];
}

然后,场景退出,调用如下:

CCDirector *director = [CCDirector sharedDirector];

[[导演 openGLView] removeFromSuperview];

[导演结束];

当我再次尝试启动游戏时,会再次调用上述 startGame 方法。这是不显示纹理的地方。

如果我需要提供有关此问题的更多详细信息,请告诉我。

【问题讨论】:

    标签: iphone cocos2d-iphone opengl-es-2.0


    【解决方案1】:

    我的建议是不要关闭director,将openGLView保留在hierarchy中,设置为隐藏即可:openGLView.hidden = YES;

    你可以分别通过[[CCDirector sharedDirector] startAnimation]stopAnimation来启动和停止cocos2d。

    【讨论】: