2012-07-20 44 views
0

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

-(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视图,越来越黑了,不能工作了。

回答

1

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

1

您可能需要致电[glcontext update]glViewport(0,0,oglWidth,oglHeight)来调整视图大小的更改。

+0

我试过了。 Maby我不知道如何使用它,但是在函数witch运行时,我在添加'[glcontext update]'时更改大小,但没有任何结果。 – hockeyman 2012-07-20 10:15:30

+0

试试这个编辑版本。 – andyvn22 2012-07-20 10:22:19

+0

不工作,因为它应该工作。我猜它是因为glOrtho在程序启动时被描述,稍后在调整大小时不会进行编辑。但正如我所看到的,我无法更新glOrtho。如果它现在调整大小几乎没问题,我的意思是它应该设置宽度,但高度保持不变,因为它在启动时保持不变,并且在发布时它的观察只是纹理女巫的一部分。我的意思是,glOrtho是问题 – hockeyman 2012-07-20 11:22:28

1

如果你使用的是一个NSOpenGLView,那么就有一个名为reshape的方法,当视图被重新调整时会被调用。在那里,你应该打电话glViewport并相应地更新大小。