2017-10-04 1 views
1

벤치마킹 :glDisable (GL_BLEND) 로이드 장치 성능에 영향을 폴리곤의 동일한 세트의 렌더링 시간의

:

A) glEnable(GL_BLEND); 
    glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); 

B) glDisable(GL_BLEND); 
    glBlendFunc(GL_ONE, GL_ZERO); 

는에 실제로 약간 느리다 블렌딩 렌더링하여 활성화되는 것을 보여준다

  • 바탕 화면, OpenGL을 2.0
  • 레노버 P90Pro 인텔 아톰/파워 VR G6430, OpenGL을 ES 2.0
ARM-A7과

  • 삼성 갤럭시 탭 : 0

    내 혼란이 이러한 장치에 벤치마킹하는 것은 큰 차이, 내가 장애인 혼합 렌더링, 가정, 의미를 보여줍니다 성능 비용이 많이 드는 블렌딩 등이 사용 된 것으로입니다/ARM-A57 /는 Adreno와

  • 소니 엑스 페리아 Z3 + 내장 퀄컴는 Adreno 305 (430)

이유는 무엇입니까? 차이가 있어야합니다, 맞죠? 사용되는 조각 쉐이더는 매우 간단합니다 :

precision highp float; 
uniform sampler2D tex; 
varying vec4 v_fragmentColor; 
varying vec2 v_texCoord; 

void main() { 
    gl_FragColor = v_fragmentColor * texture2D(tex, v_texCoord); 
} 

상황의 정의가 너무 일반적인 경우는 SO 질문에 적합하기에 적합한 최소한의 작업 샘플을 생산하기 상당히 어렵다 죄송합니다. 여기에 내가 놓치고있는 몇 가지 알려진 문제가 있기를 바란다.

ps : 테스트 한 모든 장치에서 결과 이미지가 예상대로 표시되며 블렌딩이 활성화 된 투명 영역과 비활성화 된 경우 불투명 한 검정색이 표시됩니다. 전체적인 질문은 단지 성과에 관한 것입니다.

+0

어떻게 측정 했습니까? –

+0

저는 그래픽, GPU 등의 전문가는 아니지만, "블렌딩을 사용하지 않는 _ 렌더링은 블렌딩을 사용할 때와 같이 성능이 많이 드는 것과 같습니다." "주변에서 블렌딩이 가능한 _ 렌더링은 ** 더 이상 ** 성능이 뛰어납니다. ** (a) **보다 소리가 좋고 (문제가 아님), ** (b) **는 [해당 장치에서] 사용할 수있는 하드웨어가 있음을 제안합니다. 블렌딩 (blending) "은 렌더링의 정상적인 부분으로 사용되므로 효과적으로 사용할 수 있습니다. – TripeHound

+0

두 경우 모두 드라이버/하드웨어 제한 인 60fps가 표시 될 수 있습니다. 그것은 당신이 성능 차이를보기에 충분히 힘들지는 것을 의미합니다. 차이를보기 위해 많은 (수천?) 이미지를 렌더링 해보십시오. – Dave

답변

0

당신이 언급 한 플랫폼에 대한 지식이 없어도 자신의 경험에 비추어 볼 때 항상 적은 것은 아니라고 말할 수 있습니다. 때때로 코드 또는 hw의 분기 작업이 중복 작업을 수행하는 것보다 느립니다. 예를 들어, glDisable (GL_BLEND)을 chosing 할 때 드라이버는 func 및 eq 매개 변수를 설정하여 실제로 사용하지 않는 경우 작동하지 않도록 설정합니다. 그것은 공급 업체가 최적화하려고 시도했던 것에 달려 있습니다. "최악의 경우"는 종종 최적화하는 것이 가장 좋지만 일반적인 경우도 종종 우수합니다. 비정상적이고 성능이 떨어지는 것을 최적화하는 것은 그만한 가치가 있습니다.

필자는 플랫폼에서 30 분에서 50 % 더 빠른 속도로 렌더링을 사용하도록 설정했으며 비활성화 된 텍스처보다 1x1 크기의 흰색 픽셀 텍스처와 기본 색상을 혼합했습니다. 처음에는 그런 생각이 들었지 만 생각해봤을 때 거의 10 년 동안 래스터지도를 렌더링하기 위해 플랫폼이 계속 최적화되었습니다.

관련 문제