2012-04-02 2 views
1

마지막 질문 이후, 나는 내 솔루션이 참조 문제를 방지하기 위해 텍스처를 복제하는 것임을 발견했습니다. 그러나 나는 다음과 같은 질문을 던지고있다.C#/XNA - RenderTarget2D.GetData(), RenderTarget2D.SetData() : 프레임 당 텍스처를 복제하는 것이 효율적입니까?

Color[] color = new Color[screen.Width * screen.Height]; 
    InputRenderTarget2D.GetData(Color); 
    OutputRenderTarget2D.SetData(color); 

하나의 경우, 초당 60 회 실행했을 때이 효과가 있습니까? 1 텍스쳐를 설정하고 있지만, 나는 편집 - 편집증이고 성능을 좋게 또는 최상으로 유지하고 싶습니다. "주요하게 눈에 띄는 액자 (framelyrops)"등을 일으킬 수 있습니까?

둘째, 새 Color 배열을 만드는 대신 재활용합니다.

답변

3

GetData()/SetData() 호출이 렌더링 대상 데이터를 주 메모리로 전송하기 때문에 성능에 좋지 않을 것으로 생각됩니다. IMO, 더 나은 대안은 OutputRenderTarget2D에 동일한 크기의 쿼드를 사용하여 InputRenderTarget2D를 렌더링하는 것입니다. 이렇게하면 CPU-GPU 데이터 전송을 막을 수 있습니다.

+0

그래서 렌더 타겟을 OutputRenderTarget으로 설정 한 다음 GPU 렌더링 (쿼드 또는 스프라이트 배치)을 통해 InputRenderTarget에 렌더 타겟을 렌더링 하시겠습니까? – Jared

+0

... 가능한 방법으로 spritebatch를 사용 중입니다. – Jared

+0

수정. 그리고 확실하게 원하는대로 쿼드를 렌더링 할 수 있습니다. – Ani

관련 문제