2013-11-27 226 views
0

我应该如何使透明的cocos3D场景(透明背景的EAGLView)?我知道这将是一个重复的问题。 但我已经尝试了各种来源的所有建议,但其中没有人为我工作带透明背景的EAGLView?

刚上市他们在这里作为参考:

1)改变了不透明和透明色在setGLDefaultValues方法CCDirector.m

openGLView_.opaque = NO; 
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 

2)在EAGLView的initWithCoder

CAEAGLLayer *eaglLayer = (CAEAGLLayer*)[self layer]; 

    pixelformat_ = kEAGLColorFormatRGBA8; 
    depthFormat_ = 0; // GL_DEPTH_COMPONENT24_OES; 
    multiSampling_= NO; 
    requestedSamples_ = 0; 
    size_ = [eaglLayer bounds].size; 

    eaglLayer.opaque = NO; 
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 

    CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB(); 
    const CGFloat myColor[] = {0.0, 0.0, 0.0, 0.0}; 
    eaglLayer.backgroundColor = CGColorCreate(rgb, myColor); 
    CGColorSpaceRelease(rgb); 

    eaglLayer.drawableProperties = eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil]; 

    if(! [self setupSurfaceWithSharegroup:nil]) { 
     [self release]; 
     return nil; 
    } 

3)更改了我的CCViewController的isOverlayingDeviceCamera方法

viewController.isOverlayingDeviceCamera = YES; 

我使用EAGLView.h 1.3版 我试图用新的版本(1.7),但我无法继续,因为它使编译器错误这种进口

#import <OpenGL/OpenGL.h> 

请给我一只手,因为我浪费了我整整一天解决此

回答

0

发挥,我相信你弄错了OpenGL清晰颜色UIView的清晰颜色:

而不是

glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 

使用

openGLView_.backgroundColor = [UIColor clearColor]; 
+0

我曾在setGLDefaultValues中试过。但不起作用。我应该使用更新版本的EAGLView类而不是版本1.3吗? – sajaz

+0

更新:我试过openGLView_.backgroundColor = [UIColor redColor];然后显示红色背景,突然变成黑色 – sajaz

0

cocos3d 2.0,看看无论是在你好,世界项目模板,或CC3DemoMashUp演示应用程序的AppDelegate类。

如果取消对该行:

_viewController.isOverlayingDeviceCamera = YES; 

它会做你想要什么。

请务必按照AppDelegates中的模式创建导向器,控制器和视图。特别是,cocos3d,您应该使用CC3UIViewController(或CC3DeviceCameraOverlayUIViewController的子类用于显示相机),并让它配置并创建CC3GLView。远离EAGLView远等

如果您使用的是版本cocos3d的之前2.0,再次,它是相似的,看看如何在控制器和视图的样本进行处理cocos3d AppDelegates

+0

以上两条评论与原始问题得到解答无关。今后,请发布一个新问题。 –

+0

这似乎打破了比尔。我取消了CC3DemoMashUpAppDelegate.m中的_viewController.isOverlayingDeviceCamera = YES和CC3DemoMashUpScene.m中的[self addBackdrop],但我没有看到我的相机取代了蓝天。 –

+0

我刚刚证实它在** Cocos3D 2.0.2 **演示项目中工作。使用更新版本的Cocos2D,您还需要将2D'CCScene'的背景颜色设置为透明。请按照示例项目中的说明进行操作。如果您使用的是故事板,请确保按照CC3DemoMultiScene演示应用程序中的MainViewController openScene:方法中的说明解释如何在Storyboard文件中配置UIViews。 –