我目前有一个 mac 应用程序,打开时的窗口大小设置为 480 x 560,在这个窗口中有一个NSOpenGLView
, 在 reshape 函数中我有以下内容:
NSLog(@"Reshaping");
float screenWidth = (float)[_window frame].size.width;
float screenHeight = (float)[_window frame].size.height;
glLoadIdentity();
glViewport(0,0,screenWidth,screenHeight);
glMatrixMode(GL_PROJECTION);
glOrtho(-10, 110, -10, 110, -1, 1);
从 OpenGL 方面来看,这一切似乎都可以正常工作,图像拉伸等,但是当我使窗口大于原来的窗口时,OpenGL 视图似乎不想改变(但是其中的 OpenGL 确实如此)。我打印了以下值以查看问题所在:
NSLog(@"width 1:",[_window frame].size.width);
NSLog(@"width 2:",[self bounds].size.width);
NSLog(@"width 3:",[[self superview] bounds].size.width);
唯一改变的是第一个,其他两个可以手动更新(我尝试将它们设置为窗框值,但这些是只读的..)还是我在这里遗漏了什么?