当我将内容渲染到绑定了纹理的FBO上,然后使用基本着色器将此绑定纹理渲染到全屏四边形时,性能会大大降低。
例如:
直接渲染到屏幕(使用基本着色器):
当首先渲染为纹理时,然后使用全屏四边形渲染纹理:(使用相同的基本着色器,通常会像是模糊或绽放):
有人知道如何加快速度吗?由于当前性能无法使用。另外,我还将GLKit
用于基本的OpenGL。
最佳答案
需要在需要的地方使用精度。
lowp-用于颜色,纹理坐标,法线等
highp-用于矩阵和顶点/位置
Quick reference,检查精度范围,在“限定符”的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;
}