0

我想在更改纹理大小时更新我的​​ NSOpenGLView 窗口。没关系。发生这种情况时我会注册事件,但我无法调整 OpenGLView 的大小。值女巫正在改变是wh

-(void)initOpenGL {
NSSize size = {w, h};
[self setFrameSize:size];
NSOpenGLContext *glcontext;
glcontext = [self openGLContext];
[glcontext makeCurrentContext];
glMatrixMode(GL_PROJECTION);
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);               
glOrtho(0.0, h, 0.0, w, -1.0, 10.0); 
}

当应用程序启动时它可以正常工作,但是当我[self initOpenGL]在任何这些大小更改后这样做时,OpenGL 视图会变黑,并且不再工作。

4

3 回答 3

1

如果您使用的是 NSOpenGLView,那么reshape会调用一个方法,该方法会在视图被重塑时被调用。在那里,您应该相应地调用glViewport并更新大小。

于 2012-07-20T11:00:06.270 回答
1

您可能需要调用[glcontext update]glViewport(0,0,oglWidth,oglHeight)调整视图大小的变化。

于 2012-07-20T10:09:06.163 回答
1

如果有人会遇到这个问题,只需glLoadIdentity();在 OpenGL 初始化的开头添加。

于 2012-08-03T13:59:43.650 回答