EAGLView具有透明背景



我应该如何使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>

请帮我一把,因为我在这个上玩了一整天

我相信你把OpenGL的透明颜色误认为UIView的透明颜色:

代替

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

使用

openGLView_.backgroundColor = [UIColor clearColor];

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

如果取消注释行:

_viewController.isOverlayingDeviceCamera = YES;

它会做你想做的事。

请确保遵循AppDelegates中的模式来创建控制器、控制器和视图。特别是,对于cocos3d,您应该使用CC3UIViewController(或类似CC3DeviceCameraOverlayUIViewController的子类,用于显示相机),并让它配置和创建CC3GLView。远离EAGLView

如果您使用的是2.0之前的cocos3d版本,同样也是类似的,请查看示例cocos3dAppDelegates中如何处理控制器和视图。

相关内容

  • 没有找到相关文章

最新更新