2009-09-05 1 views
1

내 iPhone OpenGL ES 앱을 최적화하려고합니다. 이것은 GLSprite 및 GLPaint 샘플 앱을 기반으로합니다. 나는 EAGLView를 기본 클래스로 분해했으며 3 개의 다른 OpenGL 뷰에서 서브 클래 싱하여 3 개의 투명 레이어를 만들었습니다. 3 개의 EAGLViews에 대한 표시 부모는 UIView이고 UIView는 UIWindow의 자식입니다. 가능한 한 60fps에 가깝게하려고 노력 중입니다.여러 개의 전체 화면 투명한 iPhone OpenGL ES 레이어의 그리기를 어떻게 최적화 할 수 있습니까?

내가하고 있어요 것은 ... 나는 아이폰이 초당 60 프레임에서 50 개 투명 레이어를 그리기 할 수 있다는 말을이 사이트에 다른 사람을 들었습니다, 그래서는 격려의 : 9 질감에 그리기

1) 레이어 # 1에 GLPaint (renderLineFromPoint : toPoint :)와 같은 점 - 스프라이트 기반 함수를 사용합니다. 이것에 사용되는 텍스처는 64x64이며 중간에 40x40 원이 있고 나머지는 투명합니다. 2 계층하는 동일한 기능 및 질감을 가진 단일 선 그리기

2). 가 128x128 텍스처 9 인스턴스 (# 3 층 투명한 나머지)으로 80x80 중심으로 원을 드로잉

3). 이 레이어는 맨 위에 있습니다.

레이어 # 1과 # 3의 변화를 매우 드물게, 그리고 층 2 변경 (한 라인을 묘화 전체 화면 소거)마다있는 touchesMoved : 불린다.

원래 나는 기본적으로 위해 3 층에 대한 내용을 그릴 ... 샘플처럼 단일 EAGLView에이 일을 했어요. 그러나 이것은 너무 느립니다. 선 그리기 (레이어 1과 레이어 2)를 추가하기 전에는 괜찮 았지만, 불행히도 touchedMoved마다 10 개의 선을 그려 프레임 속도를 절반으로 줄였습니다. 그래서 나는 그들을 레이어들로 나눔으로써 그것을 최적화하려고 노력했다. 필요할 때만 각 레이어를 한 번 그렸다. (손가락 움직임마다 레이어 2 그리기). 아직 충분히 빠르지는 않습니다. 투명도가 (각 레이어가 보여야 할 필요가있는 모든 텍스처 드로우가 혼합되어야 함) 많이 있으므로 가정하고 있습니다.

내가 그림을 많이하고 있어요 생각하지 않는다는 ... 9 반투명 쿼드 여러 라인을 많이입니까?

그래서, 내가 여기에 운명입니까? 이 투명성을 사용하면 성능이 저하됩니다. 또는 내가 놓친 뭔가가 있습니다 ... 어떤 도움도 대단히 감사합니다!

+0

업데이 트를 합성에 밖으로 허튼 생각 : 난 * 아무것도 그리지 않는 경우 초당 60 프레임이 * # 2 층에 도착. 순식간에 레이어 # 2의 drawView 함수에서 glClear (GL_COLOR_BUFFER_BIT) (및 * 아무것도 없음)를 넣으면 프레임 속도가 19-20fps로 떨어집니다. 이것은 손가락으로 화면을 움직이는 것과 같습니다. 이것은 시스템이 이제 비어있는 경우에도 레이어 2를 혼합해야하기 때문입니다. 이전에는 필요하지 않았을 때였습니까? – yozzozo

답변

1

i는 레이어 # 1을 제거하여이를 수정했습니다. 이제 레이어 # 2는 정적 및 동적 선 그리기를 처리합니다. 60fps로 돌아 가기! :)

내가 아이폰은 불과 3 개 전체 화면 투명 레이어 ...

관련 문제