我使用OpenGL ES 3.0制作了一个图像处理应用程序。 图像大小为830X640。 所以我使用glViewport仅在830X640区域执行GPU处理。 Fallow是我的代码的一部分。
glViewport(0, 0, 830, 640);
glUseProgram(mProgram);
glBindVertexArray(mVBState);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, Texture_EE_output);
glUniform1i(h_sampler5, 0);
GLsync syncFence5 = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
glDrawArraysInstanced(GL_TRIANGLE_STRIP, 0, 4, 1);
glDeleteSync(syncFence5);
我在Galaxy S5上测量了我的应用程序的FPS(Adreno 420, QHD ),Nexus 7(Adreno 320,FHD)和Nexus 5(Adreno 330,FHD) )。
结果是Adreno 330(59Hz)> Adreno 320(45Hz)> Adreno 420(35 HZ)。 正如我所料,Adreno 330显示出比Adreno 320更好的性能。 但Adreno 420的表现不如Adreno 330和andreno 420。
所以我怀疑显示器的分辨率对FPS的影响。 另一方面,我已经使用glViewport来避免这种情况发生。
使用glViewport部分渲染我错了吗? 还是有其他我从未注意到的问题?
感谢您的阅读。