optimizing creation of glcontexts, less flicker

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63279 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor 2010-01-26 14:36:39 +00:00
parent 06b4070d7c
commit d5f46cddf1

View File

@ -46,6 +46,7 @@
@interface wxUICustomOpenGLView : UIView
{
CGRect oldRect;
EAGLContext* context;
/* The pixel dimensions of the backbuffer */
@ -61,6 +62,7 @@
- (BOOL) createFramebuffer;
- (void) destroyFramebuffer;
- (id) initWithFrame:(CGRect) rect;
@end
@ -80,6 +82,15 @@
}
}
- (id) initWithFrame:(CGRect)rect
{
if ( !(self=[super initWithFrame:rect]) )
return nil;
oldRect = rect;
return self;
}
- (BOOL)isOpaque
{
return YES;
@ -131,8 +142,15 @@
- (void) setContext:(EAGLContext*) ctx {
context = ctx;
[EAGLContext setCurrentContext:ctx];
[self destroyFramebuffer];
[self createFramebuffer];
#if 0
CGRect newRect = [self frame];
if ( /* (CGRectEqualToRect(newRect, oldRect) == NO && ![self isHidden] && newRect.size.width > 0 && newRect.size.height > 0 )
|| */ viewFramebuffer == 0 )
{
[self destroyFramebuffer];
[self createFramebuffer];
}
#endif
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
}
@ -141,6 +159,12 @@
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
}
- (void)layoutSubviews {
[EAGLContext setCurrentContext:context];
[self destroyFramebuffer];
[self createFramebuffer];
}
@end