我在使用OpenGL中使用纹理三角形网格绘制全屏幕背景时看到的糟糕表现让我感到困惑:使用最基本的着色器绘制背景并且没有其他任何内容以40 fps最大化,使用默认值使用50 fps管道.
虽然40 fps似乎并不太糟糕,但在其上添加任何其他内容会使fps下降,并且考虑到我需要在其上绘制100-200个其他网格,我最终得到的是一个微不足道的15 fps,这根本就不是可用.
我已将相关代码隔离到此处可用的XCode项目中,但其本质是规范纹理贴图示例:
static const GLfloat squareVertices[] = {
-1.0f, -1.0f,
1.0f, -1.0f,
-1.0f, 1.0f,
1.0f, 1.0f,
};
static const GLfloat texCoords[] = {
0.125, 1.0,
0.875, 1.0,
0.125, 0.0,
0.875, 0.0
};
glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
if ([context API] == kEAGLRenderingAPIOpenGLES2) {
// Use shader program.
glUseProgram(program);
glActiveTexture(GL_TEXTURE0);
glUniform1i(uniforms[UNIFORM_TEXTURE], 0);
glBindTexture(GL_TEXTURE_2D, texture);
// Update attribute values.
glVertexAttribPointer(ATTRIB_VERTEX, 2, GL_FLOAT, 0, 0, squareVertices);
glEnableVertexAttribArray(ATTRIB_VERTEX);
glVertexAttribPointer(ATTRIB_TEXCOORD, 2, GL_FLOAT, GL_FALSE, 0, texCoords);
glEnableVertexAttribArray(ATTRIB_TEXCOORD);
} else …Run Code Online (Sandbox Code Playgroud)