2012-04-30 2 views

답변

10

우선, 메모리 사용량은 성능과 관련이 매우 적습니다. 텍스처로 전체 메모리를 채울 수 있습니다. 게임에서는 상관 없습니다. 차이점이있을 곳을 렌더링 할 때입니다. 그리고 텍스처를 채우는 화면 영역의 양, 오버레이, 배치, 회전, 크기 조절, 음영 처리 및 알파 블렌딩이 얼마나 많은지에만 중요합니다. 이것이 텍스처 렌더링 성능의 주요 요소입니다. 메모리 사용은 아주 중요한 역할을합니다.

내가 한 것과 cocos2d performance analysiscocos2d sprite-batch performance test에 관심이 있습니다. 두 가지 모두 테스트 프로젝트와 함께 제공됩니다. 아이폰과 아이폰 3G 장치가 24메가바이트 텍스처 메모리 제한이 enter image description here

참고 : 최대 텍스처 크기로

Learn Cocos2D 책에서 테이블을 살펴 있습니다. 3 세대 (iPhone 3GS) 이상에서는 더 이상 제한이 없습니다. 또한 기기에 256MB의 메모리가 설치되어있을 수 있지만 앱에서 사용할 수있는 메모리는 훨씬 적습니다.

예를 들어, iPad (1 세대)에서는 약 100MB의 메모리를 사용하지 않는 것이 좋습니다. 사용 가능한 최대 메모리는 약 125MB로, 메모리 경고는 약 80-90 MB 메모리 사용.

iOS 5.1을 사용하면 Apple에서 iPad 2의 최대 텍스처 크기를 늘릴 수 있습니다. 가장 안전하고 일반적으로 사용할 수있는 텍스처 크기는 망막 텍스처의 경우 2048x2048이고 표준 해상도 텍스처의 경우 1024x1024입니다.

iPod touch는 실제 세대의 아이폰 모델과 동일하지만 쉽게 식별 할 수 없기 때문에 표시되지 않습니다. 예를 들어 iPod touch 3 세대에는 8, 16 및 32GB 플래시 메모리가있는 장치가 포함되어 있지만 실제로 8GB 모델은 2 세대 하드웨어입니다.

+0

답변 해 주셔서 감사합니다. 블로그가 정말 멋지게 보입니다. 기사를 확인할 것입니다. 고마워요! – Paul

+1

안녕하세요, 한 가지 질문 드릴까요? 각 장치에 대해 정상/선택/사용 중지 된 이미지에 대해 들었습니다 ... 각 장치에 대해 모든 이미지를 만들 때 무엇을합니까? 이미지의 각 정상/선택/해제 된 버전에 대해'-hd' 이미지와 표준 이미지를 생성합니까? 다시 한 번 감사합니다 – Paul

+0

@ Paul 당신이 해결 했습니까? 비슷한 질문 (http://stackoverflow.com/questions/10232539/how-to-approach-hd-files)과 LearnCocos2D에 의해 CCFileUtils 로더를 강제로 멈추도록 제안한 또 다른 질문을했습니다. hd 파일과 nonhd 파일을 모두 필요로합니다 .. 도움이되기를 바랍니다. – mm24

0

에 대한

감사 (배경 이미지, 또는 내 문자 그래픽 (내가 배치 노드를 사용하는 경우에도)?에 대한) .. 크기 1024 × 1024의 배치 노드는 4 주위 소요 MB는 공간 메모리뿐입니다. 응용 프로그램의 최대 한계는 24MB입니다. 따라서이 24MB 공간에 도달하면 게임 속도가 느려지고 그 이후에는 충돌이 발생합니다. 속도 저하를 피하기 위해 한 번에 최대 4 개의 일괄 처리 노드 (즉, 16MB)를 사용했습니다. 나머지 8MB는 변수 및 기타 데이터를 위해 남겨졌습니다. 더 많은 배치 노드를 사용하기 전에 메모리를 정리하고 사용하지 않는 배치 노드를 제거하는 데 사용했습니다. 4s에서 메모리 제한에 대해 알지 못합니다. 그러나 iPhone 4의 경우에는 배웠습니다. 이 논리를 염두에두고 게임을 원활하게 실행하는 데 사용했습니다.

+0

왜 응용 프로그램의 메모리 제한이 24MB라고 말합니까? 한도는 장치에 의해 결정되며 현대 장치에는 더 많은 메모리가 있습니다. 인스 트루먼 테이션을 사용하면 지금 구축중인 앱이 실행 중일 때 약 80MB의 메모리를 사용한다는 것을 알 수 있습니다. – johnbakers

+0

그런 이유로 나는 iPhone 4를 위해 24 MB를 언급했다. 나는 4S에 관해 모른다. .. 그 이상 내가 배웠던 그 질감 기억 위에. 악기의 메모리도 150MB에 도달했습니다. 저는 악기의 메모리가 실제로 사용 된 메모리와 다른 것 같아요. 나머지 악기에 대한 메모리 할당은 실제로 알지 못합니다. –

+0

나는이 정보가 정확하지 않다고 확신한다. iPhone 4에서 24MB 제한? 나는 그렇게 생각하지 않는다. iPhone 4에서이 메모리 사용량을 4 배로 늘리면 문제없이 실행할 수 있습니다. 그리고 Instruments는 메모리 사용을 정확하게보고합니다. 그렇지 않으면 유용한 도구가 아닙니다. – johnbakers

1

이미지 및 텍스처의 크기는 지원하는 장치에 따라 다릅니다. 구형 장치는 작은 레이어를 지원했지만 2048x2048 크기라고 생각합니다. 나는 그러한 제한이 현재의 장치에는 존재하지 않는다고 생각한다.

큰 이미지의 경우 큰 이미지를 처리 ​​할 때 가장 큰 성능 향상을 입증하기 위해 테스트 된대로 일괄 처리 노드를 사용해야합니다. 가능한 한 많이 사용하는 것이 좋습니다.

로드 할 수있는 양은 실제로 기기에 따라 다릅니다. 새로운 iPad는 1GB의 메모리를 가지고 있으며 큰 이미지를 위해 더 많은 사용 가능한 메모리를 갖도록 설계되었습니다. 1 세대 iPad는이 양의 1/4 메모리를 가지고 있으며 내 경험에 따르면 100MB 정도의 메모리가 사용되면 앱이 다운되는 것을 보았습니다 (Instruments를 사용하여 확인 됨).

트릭은 현재 응용 프로그램의 작업에 필요한만큼의 메모리 만 사용하고 새 장면 또는 이미지/스프라이트/텍스처의 새 세트로 이동할 때이를 해제하는 것입니다. 예를 들어 뷰포트에 가장 가까운 타일 만 메모리에로드되는 매우 큰 타일 텍스처를 사용할 수 있습니다. 화면에서 볼 수없는 부분을 메모리에서 제거하면 영원히 확장되는 무한 크기의 뷰를 기술적으로 가질 수 있습니다.

물론 많은 리소스를 다룰 때는 응용 프로그램 위임자가 메모리 경고에 적절하게 응답하는지 확인하십시오.