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工具概述