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:
parent
06b4070d7c
commit
d5f46cddf1
@ -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
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user