我应该如何使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
中如何处理控制器和视图。