I have implemented zoom method for my NSOpenGLView. NSOpenGLView frame size depends on zoom value (height and width values are being calculated by including zoom value). And if user zooms-in and nsopenglview frame size then gets bigger than my window I need to have scrollbar, to be able to scroll in nsopenglview. I tried adding NSOpenGLView to NSScrollView, but unsuccessfully. NSOpenGLView hasn’t been scrolling. I searched in internet for info but no success too. For example this method looked very nice for me, but it didn’t worked.
Maby someone could suggest me solution to do it?
I almost figured it out. But not fully. Right now I already have code:
visibleRect = [self visibleRect];
glViewport(0, 0, someWidth, someHeight);
glFrustum(visibleRect.origin.x, (visibleRect.origin.x + visibleRect.size.width) * zoom, visibleRect.origin.y, (visibleRect.origin.y + visibleRect.size.height) * zoom, 0.1, 100);
And it looks to be working. But there is some problems. And I guess it’s caused by my zoom method. My opengl contents gets stretched when scrolling/scrolled.
When zoomed and scrolled to bottom-left corner:
When zoomed and scrolled to bottom-right corner.
As you see image is stretched. But why?
P.S. Zooming is done through glTranslatef. zoom variable in glFrustum is (-10 * zoomslider.floatValue).