나무에 여러 캔버스가있는 게임용 작은 그래픽 엔진을 작성했습니다. 레이어에있는 내용이 변경 될 때마다 엔진이 영향을받는 레이어를 표시합니다 영향을받는 가장 낮은 레이어는 drawImage()를 통해 부모 레이어에 복사되고 부모 레이어는 부모 레이어에 복사됩니다 (화면상의 캔버스). 이렇게하면 여러 개의 drawImage가 생성 될 수 있습니다() 프레임 당 호출하지만 영향을받는 레이어 아래에있는 모든 항목을 다시 렌더링 할 수 없습니다. 그러나 아무것도 렌더링을 변경하지 않거나 drawImage() 호출이 발생하는 프레임에서는 전경 오브젝트 만 이동하는 프레임에서 렌더링 및 drawImage() 호출이 최소화됩니다.레이어드 캔버스 대 수동 drawImage()의 성능
나는이 문서에 설명 된대로, 레이어로 여러 화면 캔버스를 사용하여이 비교 싶습니다 화면 캔버스 접근 방식에서
http://www.ibm.com/developerworks/library/wa-canvashtml5layering/
, 우리는 당 계층으로 렌더링 처리하고 브라우저가 화면에 레이어를 제대로 표시하도록합니다. 내가 한 모든 연구와 내가 읽은 모든 것에서, 이것은 일반적으로 drawImage()를 사용하여 수동으로 처리하는 것보다 더 효율적이라고 받아 들여집니다. 그래서 제 질문은 브라우저가 정확히 무엇이 각 프레임을 변경했는지에 대한 내부자의 지식에도 불구하고 무엇보다 효율적으로 다시 렌더링해야하는지 결정할 수 있습니까?
이 질문에 대한 답은 "두 가지 방법과 벤치마킹"입니다. 그러나 정확한 데이터를 얻으려면 실제 응용 프로그램이 필요합니다. 그때까지 내가 받아 들일만한 접근법을 가지고 있다면 나는 더 큰 물고기를 튀기 게 될 것입니다. 그래서 저는 누군가가이 길을 걸어 왔음을 알고 이것에 대한 통찰력을 제공 할 수 있습니다.
내 엔진은 계층 적 접근 방식도 사용합니다. 유일한 차이점은 drawImage를 수동으로 사용하여 브라우저가 화면에 여러 개의 레이어를 표시하는 대신 화면상의 캔버스에 내 오프 스크린 레이어를 그려야한다는 것입니다. – flancor