Cocos2d의 이미지에는 권장되는 제한이 있습니다. 너무 커서 메모리를 많이 차지합니까? 게임 속도가 느려지는 것을 피하기 위해 몇 가지 규칙, 크기 또는 Kb가 있습니까? 당신의 대답은 내 지식으로 당Cocos2d에서 권장되는 메모리 관리 한계는 무엇입니까?
답변
우선, 메모리 사용량은 성능과 관련이 매우 적습니다. 텍스처로 전체 메모리를 채울 수 있습니다. 게임에서는 상관 없습니다. 차이점이있을 곳을 렌더링 할 때입니다. 그리고 텍스처를 채우는 화면 영역의 양, 오버레이, 배치, 회전, 크기 조절, 음영 처리 및 알파 블렌딩이 얼마나 많은지에만 중요합니다. 이것이 텍스처 렌더링 성능의 주요 요소입니다. 메모리 사용은 아주 중요한 역할을합니다.
내가 한 것과 cocos2d performance analysis은 cocos2d sprite-batch performance test에 관심이 있습니다. 두 가지 모두 테스트 프로젝트와 함께 제공됩니다. 아이폰과 아이폰 3G 장치가 24메가바이트 텍스처 메모리 제한이
참고 : 최대 텍스처 크기로
내 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 세대 하드웨어입니다.
에 대한
감사 (배경 이미지, 또는 내 문자 그래픽 (내가 배치 노드를 사용하는 경우에도)?에 대한) .. 크기 1024 × 1024의 배치 노드는 4 주위 소요 MB는 공간 메모리뿐입니다. 응용 프로그램의 최대 한계는 24MB입니다. 따라서이 24MB 공간에 도달하면 게임 속도가 느려지고 그 이후에는 충돌이 발생합니다. 속도 저하를 피하기 위해 한 번에 최대 4 개의 일괄 처리 노드 (즉, 16MB)를 사용했습니다. 나머지 8MB는 변수 및 기타 데이터를 위해 남겨졌습니다. 더 많은 배치 노드를 사용하기 전에 메모리를 정리하고 사용하지 않는 배치 노드를 제거하는 데 사용했습니다. 4s에서 메모리 제한에 대해 알지 못합니다. 그러나 iPhone 4의 경우에는 배웠습니다. 이 논리를 염두에두고 게임을 원활하게 실행하는 데 사용했습니다.
왜 응용 프로그램의 메모리 제한이 24MB라고 말합니까? 한도는 장치에 의해 결정되며 현대 장치에는 더 많은 메모리가 있습니다. 인스 트루먼 테이션을 사용하면 지금 구축중인 앱이 실행 중일 때 약 80MB의 메모리를 사용한다는 것을 알 수 있습니다. – johnbakers
그런 이유로 나는 iPhone 4를 위해 24 MB를 언급했다. 나는 4S에 관해 모른다. .. 그 이상 내가 배웠던 그 질감 기억 위에. 악기의 메모리도 150MB에 도달했습니다. 저는 악기의 메모리가 실제로 사용 된 메모리와 다른 것 같아요. 나머지 악기에 대한 메모리 할당은 실제로 알지 못합니다. –
나는이 정보가 정확하지 않다고 확신한다. iPhone 4에서 24MB 제한? 나는 그렇게 생각하지 않는다. iPhone 4에서이 메모리 사용량을 4 배로 늘리면 문제없이 실행할 수 있습니다. 그리고 Instruments는 메모리 사용을 정확하게보고합니다. 그렇지 않으면 유용한 도구가 아닙니다. – johnbakers
이미지 및 텍스처의 크기는 지원하는 장치에 따라 다릅니다. 구형 장치는 작은 레이어를 지원했지만 2048x2048 크기라고 생각합니다. 나는 그러한 제한이 현재의 장치에는 존재하지 않는다고 생각한다.
큰 이미지의 경우 큰 이미지를 처리 할 때 가장 큰 성능 향상을 입증하기 위해 테스트 된대로 일괄 처리 노드를 사용해야합니다. 가능한 한 많이 사용하는 것이 좋습니다.
로드 할 수있는 양은 실제로 기기에 따라 다릅니다. 새로운 iPad는 1GB의 메모리를 가지고 있으며 큰 이미지를 위해 더 많은 사용 가능한 메모리를 갖도록 설계되었습니다. 1 세대 iPad는이 양의 1/4 메모리를 가지고 있으며 내 경험에 따르면 100MB 정도의 메모리가 사용되면 앱이 다운되는 것을 보았습니다 (Instruments를 사용하여 확인 됨).
트릭은 현재 응용 프로그램의 작업에 필요한만큼의 메모리 만 사용하고 새 장면 또는 이미지/스프라이트/텍스처의 새 세트로 이동할 때이를 해제하는 것입니다. 예를 들어 뷰포트에 가장 가까운 타일 만 메모리에로드되는 매우 큰 타일 텍스처를 사용할 수 있습니다. 화면에서 볼 수없는 부분을 메모리에서 제거하면 영원히 확장되는 무한 크기의 뷰를 기술적으로 가질 수 있습니다.
물론 많은 리소스를 다룰 때는 응용 프로그램 위임자가 메모리 경고에 적절하게 응답하는지 확인하십시오.
- 1. 모달보기의 한계는 무엇입니까?
- 2. 리팩터링의 한계는 무엇입니까?
- 3. 어셈블러의 한계는 무엇입니까? (NASM)
- 4. 레일에 루비의 한계는 무엇입니까?
- 5. Sinatra의 한계는 무엇입니까?
- 6. 메모리 관리
- 7. 메모리 관리
- 8. 메모리 관리
- 9. 메모리 관리
- 10. 메모리 관리
- 11. 메모리 관리
- 12. phoneGap/Cordova의 기술적 한계는 무엇입니까?
- 13. 텍스트 영역의 실제 한계는 무엇입니까?
- 14. CMS에 권장되는 아키텍처는 무엇입니까?
- 15. 람다 식과 메모리 관리
- 16. Tcl 메모리 관리
- 17. 누출 메모리 문제, 메모리 관리
- 18. iphone 메모리 관리
- 19. iOS에서 OpenGl 메모리 관리
- 20. iPad보기 컨트롤러 메모리 관리
- 21. 메모리 관리 + 컨테이너
- 22. iOS 및 메모리 관리
- 23. iOS 메모리 관리 - viewDidUnload
- 24. C/OpenCV 메모리 관리
- 25. 기업 웹 사이트에 권장되는 오픈 소스 콘텐츠 관리 시스템은 무엇입니까?
- 26. 아이폰에서 메모리 관리 경고
- 27. NSDictionary로 메모리 관리
- 28. 자바 및 메모리 관리
- 29. 아이폰 메모리 관리 개념
- 30. 안드로이드 getApplicationContext 메모리 관리
답변 해 주셔서 감사합니다. 블로그가 정말 멋지게 보입니다. 기사를 확인할 것입니다. 고마워요! – Paul
안녕하세요, 한 가지 질문 드릴까요? 각 장치에 대해 정상/선택/사용 중지 된 이미지에 대해 들었습니다 ... 각 장치에 대해 모든 이미지를 만들 때 무엇을합니까? 이미지의 각 정상/선택/해제 된 버전에 대해'-hd' 이미지와 표준 이미지를 생성합니까? 다시 한 번 감사합니다 – Paul
@ Paul 당신이 해결 했습니까? 비슷한 질문 (http://stackoverflow.com/questions/10232539/how-to-approach-hd-files)과 LearnCocos2D에 의해 CCFileUtils 로더를 강제로 멈추도록 제안한 또 다른 질문을했습니다. hd 파일과 nonhd 파일을 모두 필요로합니다 .. 도움이되기를 바랍니다. – mm24