I’m creating a drawing app on the iPad where the user can draw and scroll through the drawing. (Think of a canvas 4000 pixels wide with a view port width of 1024) At the moment, I’m using OpenGL for the drawing, and with a width of 1024, it works great. When I change the frame size of the UIView to 4000, I get “failed to make complete framebuffer object 8cd6”. When I reduced it to a width of 2000, I ended up getting “wacky” results. I know I can manipulate the frame correctly, as having a frame width of 500 creates the correct result.
I was also thinking of leaving the width 1024 and moving the camera of the OpenGL layer, but how would that work with the UIScrollView that I setup? So I’m unsure on what to do at the moment. Any advice?
Thanks in advance
P.S. The code is largely based of GLPaint sample Apple provides here
I think you’d be best off with the scheme you suggest towards the end — keeping the OpenGL view static and outside of the scroll view, and moving its contents so as to match the movement of the scroll view.
Assuming you’re using a
GLKView, implement yourglkView:drawInRect:so that it gets thecontentOffset(and, probably, thebounds) properties from your scroll view and draws appropriately. E.g. (pretending you’re using GLES 1.0 just because the matrix manipulation methods are so well known):Then connect yourself as a delegate to the scrollview and just perform:
To ensure the GL redraws whenever the scroll view is scrolled.