2013-07-17 3 views
0

시간에 업데이트 될 UIView에 좌표 그래프를 표시하고 싶습니다. 그래프를 업데이트하기 위해 UIView와 다른 메서드들 중 -drawrect을 구현한다고 가정합니다.이미지를 -drawrect로 드로잉하거나 파일에서 동일한 이미지를로드하는 것이 더 효율적입니까?

그래프의 좌표계는 시간이 지남에 따라 동일하므로 두 개의 UIView를 갖는 것이 더 효율적입니다. 하나의 뷰 (view1)가 이미지 파일의 좌표계를 뷰로로드하므로 뷰를 그릴 필요가 없습니다. 그래프를 업데이트하고 -drawrect을 구현하고 다른 그래프 (view2)를 구현하고 view1의 하위보기로 추가 할 때 전체 그래프가 그려지는 UIView가 하나만있는 것보다 -drawrect?

위의 것은 단지 구체적인 예일뿐입니다. 내가 궁금한 건 그것이 -drawrect까지 정적 인 UI 요소를 가능한 한 많이 동적 패턴으로 분할하는 디자인 패턴이라면 그렇게 할 때 CPU (또는 GPU) 리소스를 상당히 절약 할 수 있습니다.

어떤 통찰력도 인정 될 것입니다. 감사.

답변

0

내 경험에 비추어 볼 때 오프 스크린 버퍼를 가지고 화면의 일부 또는 전체를 화면에 복사하는 것이 가장 좋은 경우가 종종 있습니다. 이를 수행 할 수있는 방법은 여러 가지가 있으며, 사용하는보기 유형에 따라 다릅니다. 예를 들어 NSOpenGLView이있는 경우 텍스처 기반 FBO를 그릴 수 있습니다. 그런 다음 해당 텍스처를 사용하여 텍스처 쿼드를 화면에 그립니다. 정적 부분에 대한 CGImages로 작업하는 경우 주 메모리의 CGBitmapContext에 그려진 다음 해당 비트 맵 컨텍스트를 CGImage로 변환하여 뷰에 그릴 수 있습니다.

오프 스크린 버퍼에 그리는 방법은 그리는 대상에 따라 달라집니다. 그래프와 같은 경우에는 배경을 한 번 비 화면 버퍼로 가져온 다음 시간이 지남에 따라 점을 그리는 커브에 점을 추가하고 화면에 필요한 부분 만 복사하면됩니다. 씬의 모든 캐릭터와 오브젝트가 움직이는 게임처럼, 모든 프레임에서 장면의 모든 것을 그려야 할 수도 있습니다.

+0

답장을 보내 주셔서 감사합니다. 글쎄요, 저는 프로그래밍, 특히 그래픽 분야에서 완전히 새로운 것입니다. 버퍼가 무엇인지는 알고 있지만 텍스처가있는 FBO는 '오프 스크린 버퍼'에 대해 전혀 알지 못합니다. 대답에서 막연하게 이해 한 바로는 정적 인 그래픽 콘텐츠를 가능한 한 적게 그리는 것 (물론 정적 콘텐츠가 드문 게임이 아닌)을 만들고 메모리에서 화면으로이 내용을 복사해야한다는 것이 확실하다는 것입니다. 따라서 코드에서 동적 및 정적 컨텐츠를 분리하는 것이 좋습니다. 내가 너를 올바르게 이해 했는가? –

+0

내가 말하고자했던 것은 많은 경우에있어 우승 전략이 될 수 있지만 특정 요구 사항에 맞게 접근 방식을 조정해야한다는 것입니다. 이 경우에 그것은 당신을위한 승리가 될 것 같습니다. – user1118321

관련 문제