OpenGL ES 2.0绘制Fullscreen Quad非常慢

当我将内容渲染到具有绑定纹理的FBO上,然后使用基本着色器将该绑定纹理渲染为全屏四边形时,性能会下降得可笑。

例如:

直接渲染(使用基本着色器):

在这里输入图像说明

当渲染纹理第一,然后渲染纹理与全屏四:(具有相同的基本着色器,将通常像模糊或开花):

在这里输入图像说明

任何人有一个想法如何加快这一点? 由于目前的performance是不可用的。 另外,我正在使用GLKit的基本OpenGL的东西。

需要在需要的地方使用精度。
lowp – 颜色,纹理坐标,法线等
highp – 对于matrix和顶点/位置
快速参考 ,检查精度范围,在“限定”3页。

 // BasicShader.vsh precision mediump float; attribute highp vec2 position; attribute lowp vec2 texCoord; attribute lowp vec4 color; varying lowp vec2 textureCoord; varying lowp vec4 textureColor; uniform highp mat4 projectionMat; uniform highp mat4 worldMat; void main() { highp mat4 worldProj = worldMat * projectionMat; gl_Position = worldProj * vec4(position, 0.0, 1.0); textureCoord = texCoord; textureColor = color; } // BasicShader.fsh precision mediump float; varying lowp vec2 textureCoord; varying lowp vec4 textureColor; uniform sampler2D sampler; void main() { lowp vec4 Color = texture2D(sampler, textureCoord); gl_FragColor = Color * textureColor; } 

这很可能是由不良的OpenGL ES API调用引起的。

你应该附上一个真正的设备,并做一个OpenGL ES帧捕获。 (这真的需要一个真正的设备,帧捕获的选项将不能用模拟器)。

帧捕获将指示内存和其他警告以及与每个API调用一起修复它们的build议。 逐步通过这些并修复每个。 performance应该会有很大的提高。

这里有几个引用来完成这个工作:

  • debuggingopenGL ES框架
  • Xcode工具概述
Interesting Posts