OpenGL ES 性能 2.0 与 1.1 (iPad)

Posted

技术标签:

【中文标题】OpenGL ES 性能 2.0 与 1.1 (iPad)【英文标题】:OpenGL ES performance 2.0 vs 1.1 (iPad) 【发布时间】:2010-12-23 16:31:05 【问题描述】:

在我的简单 2D 游戏中,使用 ES 2.0 实现进行绘图时,我的帧率下降了 2 倍。如果使用得当,是可以还是2.0应该更快?

附:如果你对细节感兴趣。我使用非常简单的着色器:

顶点程序:

uniform   vec2  u_xyscale;
uniform   vec2  u_st_to_uv;

attribute vec2  a_vertex;
attribute vec2  a_texcoord; 
attribute vec4  a_diffuse;

varying   vec4  v_diffuse;
varying   vec2  v_texcoord;

void main(void)

    v_diffuse  = a_diffuse;

    // convert texture coordinates from ST space to UV.
    v_texcoord = a_texcoord * u_st_to_uv;

    // transform XY coordinates from screen space to clip space.
    gl_Position.xy = a_vertex * u_xyscale + vec2( -1.0, 1.0 );
    gl_Position.zw = vec2( 0.0, 1.0 );

片段程序:

precision mediump float;

uniform sampler2D   t_bitmap;

varying lowp vec4   v_diffuse;
varying vec2        v_texcoord;

void main(void)

    vec4 color = texture2D( t_bitmap, v_texcoord );

    gl_FragColor = v_diffuse * color;

【问题讨论】:

【参考方案1】:

"color" 是一个 mediump 变量,因为您指定了默认精度。这会强制实现将 lowp 采样结果转换为 mediump。它还需要将diffuse转换为mediump来执行乘法。

您可以通过将“颜色”声明为 lowp 来解决此问题。

【讨论】:

谢谢!如果可行,我会检查一下并为您的答案投票。

以上是关于OpenGL ES 性能 2.0 与 1.1 (iPad)的主要内容,如果未能解决你的问题,请参考以下文章

OPENGL ES 2.0 知识串讲 ——OPENGL ES 详解I(绑定 SHADER)

OPENGL ES 2.0 知识串讲 ——OPENGL ES 详解I(绑定 SHADER)

共享内存架构中的 OpenGL (ES 2.0) VBO 性能

OPENGL ES 3.1是否比OPENGL ES 2.0慢?

OPENGL ES 2.0 知识串讲 ——SHADER的功能&GLSL语法(I)

如何提高自定义 OpenGL ES 2.0 深度纹理生成的性能?