// Author: Stefan Csomor
// Modified by:
// Created: 1998-01-01
-// RCS-ID: $Id: glcanvas.cpp 54129 2008-06-11 19:30:52Z SC $
+// RCS-ID: $Id$
// Copyright: (c) Stefan Csomor
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
@interface wxUICustomOpenGLView : UIView
{
+ CGRect oldRect;
EAGLContext* context;
/* The pixel dimensions of the backbuffer */
- (BOOL) createFramebuffer;
- (void) destroyFramebuffer;
+- (id) initWithFrame:(CGRect) rect;
@end
}
}
+- (id) initWithFrame:(CGRect)rect
+{
+ if ( !(self=[super initWithFrame:rect]) )
+ return nil;
+
+ oldRect = rect;
+ return self;
+}
+
- (BOOL)isOpaque
{
return YES;
glGenFramebuffersOES(1, &viewFramebuffer);
glGenRenderbuffersOES(1, &viewRenderbuffer);
+ glEnable(GL_CULL_FACE);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
- (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);
}
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
}
+- (void)layoutSubviews {
+ [EAGLContext setCurrentContext:context];
+ [self destroyFramebuffer];
+ [self createFramebuffer];
+}
+
@end
return false;
*/
#if USE_SEPARATE_VIEW
- m_macIsUserPane = false ;
+ DontCreatePeer();
#endif
if ( !wxWindow::Create(parent, id, pos, size, style, name) )
[NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking,
kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
- m_peer = new wxWidgetIPhoneImpl( this, v );
+ SetPeer(new wxWidgetIPhoneImpl( this, v ));
MacPostControlCreate(pos, size) ;
#endif
WXGLContext context = WXGLGetCurrentContext();
wxCHECK_MSG(context, false, wxT("should have current context"));
- wxUICustomOpenGLView* v = (wxUICustomOpenGLView*) m_peer->GetWXWidget();
+ wxUICustomOpenGLView* v = (wxUICustomOpenGLView*) GetPeer()->GetWXWidget();
[v swapBuffers];
return true;
}