2010-07-17 3 views
1

32GB iPod touch 모델 3 세대에서 큰 성능 문제가 있습니다.iPod 응용 프로그램이 32GB 모델에서 8GB 모델보다 느리게 실행됩니다.

응용 프로그램은 DS 3D 게임의 포트입니다. 렌더링은 OpenGL ES 1.1로 수행됩니다. OpenAL for Audio와 MPMoviePlayerController를 비디오 용으로 사용합니다.

8GB iPod touch의 성능은 좋지만 30fps 이상으로 끊임없이 실행됩니다. 그런 다음 제 3 세대의 32GB 모델에서이를 테스트했으며 얼마나 천천히 충격을 받습니까. 내가 알아 차린 첫 번째 문제는 인트로 컷씬이었습니다. 동영상이 조각 났고 붙어 프레임이 건너 뜁니다.

3D 레벨에서 성능은 약 15fps입니다. 이 장면은 정적 정점 버퍼에 약 10000 개의 정점과 동적 정점 버퍼에 7000 개의 정점이 있습니다. 동적 정점은 모든 프레임이 아닌 각 프레임에서 업데이트되지만 스켈레톤 애니메이션의 마지막 프레임에서 변경된 부분입니다.

빌드 설정, Thumb on/off, armv7에 최적화 된 등 아무런 노력없이 연주했습니다. 8GB 모델에서는 매우 빠르게 실행되며 32GB 모델에서는 빠릅니다.

그런 다음 32GB 모델의 App Store (N.O.V.A)에서 다른 3D 게임을 시도했습니다. 그것은 좋은 성능, 비디오도 함께 실행됩니다.

이제는 아이디어가 끝났습니다.

누군가가 내게 문제가 될 수있는 힌트를 제공해 줄 수 있습니까?

그 주셔서 감사 안부 부드러운

+0

8 기가 바이트 모델은 세대입니까? – esqew

답변

2

특히 아이폰 3GS에 대한 최신 비슷한 사양과 아이팟 터치의 세 세대, 두 배의 메모리, 더 빠른 GPU, 그리고 훨씬 더 있습니다 1 세대 또는 2 세대보다 향상된 GPU

8GB 3rd gen 모델이 없었기 때문에 다른 하드웨어를 비교하고 있습니다. 여러분의 코드가 새로운 하드웨어에서 더 나 빠지게 만드는 무언가가 있습니다. 이것은 실제로 상당히 놀랍습니다. 내 생각 엔 GPU와 관련이있다.

+0

예. 8GB iPod touch의 3 세대 모델이 없었던 것을 알고 있습니다. 그게 놀랍지 만 제 2 세대 모델은 제 3 세대 모델보다 빠릅니다. GPU와 관련이 있다는 것을 의미하지만 정상적인 OpenGL ES를 사용합니다. 그리고 왜 그것이 8GB 모델 (느린 GPU)에서 매우 빠르는지 설명하지 못합니다. –

+0

코드를 더 많이 보여주지 않으면 우리가 추측 할 수있는 것이별로 없습니다. –

0

2 세대 iPod touch는 기본적으로 OpenGLES1.1을 실행하는 GPU를 가지고 있습니다.

iPod touch 3 세대는 기본적으로 OpenGLES2.0을 실행하는 GPU가 있으며 훨씬 빠르지 만 OpenGLES1.1 지침을 OpenGLES2.0 지침으로 변환하여 실행합니다. 응용 프로그램이 가능성이 GPU 드라이버가 2.0 지침

주를 사용하여 모방하기가 어렵 1.1 지침을 사용 :이 단순화 된 설명

+0

좋아요. 저는 32Gb 모델에서 값 비싼 프로세스를 보여주기 위해 Instruments를 사용했습니다. 그것은 제 UpdateDynamicVertexBuffer()가 가장 많은 시간을 필요로하지만 제 3 세대에만 필요하다는 것을 보여줍니다. 모델. 이 메서드에서 수행하는 작업은 다음과 같습니다. 애니메이션으로 인해 업데이트해야하는 모든 정점을 포함하는 하나의 큰 동적 정점 버퍼가 있습니다.각 메쉬마다 꼭지점을 통과하여 변환 행렬을 곱합니다. 그런 다음 glBufferSubData를 사용하여 수정 된 정점을 그래픽 카드에 업로드합니다. 이것은 렌더링 프로세스를 어떤 식 으로든 멈추게합니다. 모든 솔루션? –

관련 문제