#iphone #opengl-es #cocos2d-iphone
#iPhone #opengl-es #cocos2d-iphone
Вопрос:
Я пытаюсь разместить представление OpenGL поверх стандартного UIView с UIImageView. Когда я рисую что-либо в представлении OpenGL, я вижу небольшие проблемы с альфа-смешиванием, которые приводят к появлению белых линий, видимых ниже:
CCDirector *director = [CCDirector sharedDirector];
EAGLView *glView = [EAGLView viewWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)
pixelFormat:kEAGLColorFormatRGBA8 // kEAGLColorFormatRGBA8
depthFormat:0 // GL_DEPTH_COMPONENT16_OES
];
[glView setMultipleTouchEnabled:YES];
[director setOpenGLView:glView];
if(![director enableRetinaDisplay:YES]) NSLog(@"Retina Display Not supported");
[director setDeviceOrientation:kCCDeviceOrientationPortrait];
[director setAnimationInterval:1.0/60];
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
[[CCDirector sharedDirector] runWithScene:[PPAvatarEditorScene scene]];
[[CCDirector sharedDirector] resume];
[glView setOpaque:NO];
[avatarImage addSubview:glView];
Я использую Cocos2D для рисования в OpenGL view. Есть ли проблема с альфа-форматом пикселей или форматом текстуры?
Ответ №1:
Попробуйте установить glClearColor на черный:
glClearColor(0, 0, 0, 0);
Комментарии:
1. Это выглядит нормально, если я очищу альфа-канал (glClearColor(0, 0, 0, 1.0);)
2. Но очистка, о которой вы упомянули, отображается точно так же, как на скриншоте. Я начинаю думать, что это больше связано с тем, как я это рисую, чем с любым вызовом GL или пиксельным форматом.
3. Тогда, вероятно, это состояние GL (метод glEnable).