2013-11-27 3 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) Изменен метод isOverlayingDeviceCamera моего CCViewController

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, посмотрите на класс AppDelegate либо в Привет, мир шаблон проекта, или CC3DemoMashUp демо-приложение.

Если вы раскомментировать строку:

_viewController.isOverlayingDeviceCamera = YES; 

он будет делать то, что вы хотите.

Обязательно следуйте рисунку в этих AppDelegates для создания директора, контроллера и вида. В частности, с cocos3d, вы должны использовать CC3UIViewController (или подкласс, такой как CC3DeviceCameraOverlayUIViewController для показа камеры), и позволяя ему конфигурировать и создавать CC3GLView. Держитесь подальше от EAGLView и т.д.

Если вы используете версию cocos3d до 2.0, опять-таки, это похоже, и посмотрим на то, как контроллеры и мнения обрабатываются в образце cocos3d AppDelegates.

+0

Вышеуказанные два комментария не имеют никакого отношения к исходному вопросу. В будущем, пожалуйста, напишите новый вопрос. –

+0

Это кажется сломанным Биллом.Я раскоментировал '_viewController.isOverlayingDeviceCamera = YES' в CC3DemoMashUpAppDelegate.m и' [self addBackdrop] 'в CC3DemoMashUpScene.m, но я не вижу, как моя камера заменяет голубое небо. –

+0

Я только что проверил, что он работает в демонстрационных проектах ** Cocos3D 2.0.2 **. С новой версией Cocos2D вам также необходимо установить прозрачность цветового кода 2D 'CCScene'. Пожалуйста, следуйте за примерами в демонстрационных проектах. Если вы используете Storyboards, убедитесь, что вы следуете примечаниям в методе 'MainViewController openScene:' в демонстрационном приложении 'CC3DemoMultiScene', в котором объясняется, как настроить' UIViews' в вашем файле раскадровки. –

Смежные вопросы