EAGLView透明背景?

时间:2013-11-27 10:40:21

标签: ios iphone objective-c cocos2d-iphone cocos3d

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

只需将它们列在此处作为参考:

1)更改了CCDirector.m中setGLDefaultValues方法中的不透明和清晰颜色

 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>

请帮我一个忙,因为我整整一天都在玩这个

2 个答案:

答案 0 :(得分:0)

我相信你误认为UIView清晰颜色的OpenGL清晰颜色:

而不是

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

使用

openGLView_.backgroundColor = [UIColor clearColor];

答案 1 :(得分:0)

cocos3d 2.0 中,查看 hello,world 项目模板或CC3DemoMashUp演示应用程序中的AppDelegate类。

如果您取消注释该行:

_viewController.isOverlayingDeviceCamera = YES;

它会做你想要的。

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

如果你在 2.0 之前使用 cocos3d 的版本,那么它也是类似的,并且看一下cocos3d示例中如何处理控制器和视图AppDelegates