2014-12-31 4 views
0

나는 제목에 질문을 거의 넣었다. 그것이 더 이상 화면 상에 있지 않은 드로잉 타겟을 멈 추면 성능면에서 도움이 될까요? 내가 의미하는 바는 다음과 같습니다.성능면에서는 화면 상에 있지 않은 텍스처 그리기를 중지해야합니까?

if (textureLocation is on the screen) 
{ 
    draw code here 
} 

또는 중요하지 않은 (전혀) 것이 중요하지 않습니까?

감사합니다,
Shyy

+0

[horses ...] (http://ericlippert.com/2012/12/17/performance-rant/) - 귀하의 * 프로그램에 대한 두 가지 사례를 비교해 보았습니까? –

+0

@AlexeiLevenkov, 논리적으로 내가 그랬다면 나는이 질문을하지 않을 것이다. 차이점이 있는지 확인하기 위해 추가하는 데 다소 시간이 오래 걸릴 것입니다 (게임 내에서 다른 클래스에 걸쳐 텍스처의 양이 많은 경우). –

답변

2

가 따라 달라집니다. 궁극적으로 소비 된 시간은 GPU에 데이터를 전송하는 버텍스 쉐이딩 (vertex shading) 및 픽셀 쉐이딩 (pixel shading) 등 3 가지로 나뉩니다.

화면에 그려지는 다른 텍스처가있는 스프레드 시트에 텍스처가 있고 오프 스크린 끌기 호출이 다른 블록과 동일한 .Begin() .End() 블록 안에 있으면 성능이 저하되지 않습니다. 데이터를 보내고 스프릿 시트의 GPU를 설정하십시오. 4 개의 오프 스크린 버텍스는 버텍스 쉐이더를 통과하지만 병목이 아닙니다. 그래픽 파이프 라인은 버텍스 쉐이더와 픽셀 쉐이더 사이의 오프 스크린 객체를 제거하므로 픽셀 쉐이더에서 아무런 시간도 소비하지 않습니다.

그러나 독립형 텍스처이거나 자신의 .Begin() .End() 블록 인 경우 데이터 전송에 시간이 걸립니다 GPU가 그것을 추려 낼지라도 GPU로

프로파일 링이 중요한지 또는 프로파일 링이 아닌지를 알려줄 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. + 나는이 대답을 선택했습니다. +1 –

관련 문제