當設備方向更改時,我的OpenGLES視圖出現問題。我正在使用Jeff Lamarche's Xcode template。在OpenGLES中處理iPhone方向變化
如果設置了AutoresizeMask
,則在GLView上調用- (void)layoutSubviews
。發生這種情況時,我正在繪製的對象消失。 OpenGL視圖仍然部分工作,因爲我可以更改背景顏色並查看更改。
如果AutoresizeMask
是而不是集合,視圖旋轉和OpenGL對象仍然可見,但然後視圖是錯誤的大小。
這表明layoutSubviews
中有東西在多次調用時會導致問題。
下面是drawView
一些非常基本的代碼顯示問題
- (void)drawView:(UIView *)theView
{
Vertex3D vertex1 = Vertex3DMake(0.0, 1.0, -3.0);
Vertex3D vertex2 = Vertex3DMake(1.0, 0.0, -3.0);
Vertex3D vertex3 = Vertex3DMake(-1.0, 0.0, -3.0);
Triangle3D triangle = Triangle3DMake(vertex1, vertex2, vertex3);
glLoadIdentity();
glClearColor(0.7, 0.7, 0.7, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnableClientState(GL_VERTEX_ARRAY);
glColor4f(1.0, 0.0, 0.0, 1.0);
glVertexPointer(3, GL_FLOAT, 0, &triangle);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableClientState(GL_VERTEX_ARRAY);
}
當設備使用此代碼在屏幕上的三角形消失旋轉。重新定位回肖像並不會使其重新出現。
我應該不允許GLView的重新定位,還是這是我的OpenGL代碼中的錯誤?