我应该如何使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>
请帮我一个忙,因为我整整一天都在玩这个
答案 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
。