标杆呈现相同的多边形集合随着时间的:glDisable(GL_BLEND):在Android设备上没有性能影响
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的Intel Atom/PowerVR的G6430,OpenGL ES 2.0的
和我的困惑,标杆这些设备上显示没有显著差异,这意味着,我认为,与混合禁用渲染是被启用的性能,成本与混合:
- 三星Galaxy与ARM-A7标签/高通的Adreno 305板载
- 索尼XPERIA Z3 +与ARM-A57/430的Adreno
这是为什么?这应该是一个区别,对吧?使用片段着色器是非常简单的:
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:在每个测试设备上,生成的图像看起来与预期的一样,透明区域的混合被启用,不透明的黑色 - 如果禁用。整个问题只是关于表现。
你是如何测量它的? –
我不是图形,GPU等方面的专家,但是如果您将“_rendering with blending disabled”设置为“性能成本高于混合正在启用_”,则“_rendering与启用的混合是**不再具有**性能 - (比**(a)**更好)(这是一个加号,而不是问题),**(b)**对我来说表明[在这些设备上]有硬件可用于“做混合“作为渲染的正常部分,因此使用它是有效的。 – TripeHound
也许在这两种情况下,你会看到60 fps,这是驱动程序/硬件限制。这意味着你不会加载你的GPU足够难以看到性能的差异。尝试渲染许多(数千?)图像以查看差异。 – Dave