2014-09-29 2 views
0

저는 OpenGL-ES 2.0에 대한 튜토리얼 몇 개를 읽었으며 각 60Hz 프레임마다 뷰포트 (glViewport)를 설정하는 것을 보았습니다.모든 프레임의 뷰포트를 설정하는 것이 좋습니다.

예제를 단순화하기 위해이 작업을 수행하는 것이 좋습니다.

이렇게하면 성능 저하가 있습니까?

현재 iOS 용이지만 다른 플랫폼으로 이식 가능한 것을 목표로합니다.

+2

성능 영향은 미미합니다. 나는 더 이상 신경 쓰지 않을 것이다 :'glViewport()'는'glDrawArrays()'와 비교하여 버킷의 드롭이다. –

답변

3

비교적 쉽게 할 수있는 한 불필요한 전화는 피할 수 있습니다. glViewport()의 경우 뷰포트의 크기가 실제로 변경 될 때만 호출 할 수 있어야합니다 (일반적으로 창 크기를 조정할 때).

실제로이 경우에는 측정 가능한 차이가 발생하지 않을 가능성이 있습니다. 뷰포트를 설정하는 것이 가장 저렴하기 때문에 프레임 당 한 번 해보지 않아야합니다. 그리고 드라이버는 여분의 통화를 제거 할 수 있습니다.

특정 상태의 변경은 플랫폼에 따라 크게 달라질 수 있습니다. 특정 플랫폼에서 매우 저렴한 통화를 기대할 수 있습니다. 예를 들어 일부 플랫폼은 프래그먼트 셰이더의 일부로 블렌딩하므로 블렌드 상태를 변경하면 예상 한 것보다 훨씬 비쌀 수있는 셰이더 변경이 발생합니다.

운전자가 중복 된 상태 변경을 확인해야하는지 여부에 대한 부분적인 철학적 토론이 있습니다. 여분의 테스트는 불필요한 호출을 피하는 잘 작성된 응용 프로그램에 약간의 부정적인 성능 영향을 미치기 때문에 일부는 그렇지 않아야한다고 주장합니다. 벤치마킹으로 사용되는 앱/게임이 많지 않기 때문에 드라이버에서 중복 전화를 감지하면 성능이 크게 향상 될 수 있기 때문에 선택의 폭은 적습니다.

관련 문제