Производительность OpenGL ES 2.0 против 1.1 (iPad) - PullRequest
2 голосов
/ 23 декабря 2010

В моей простой 2D-игре у меня 2-кратное снижение частоты кадров при использовании реализации ES 2.0 для рисования.Это нормально или 2.0 должен быть быстрее при правильном использовании?

PS Если вас интересуют подробности.Я использую очень простые шейдеры:

вершинная программа:

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 Ответ

1 голос
/ 24 декабря 2010

"color" - переменная mediump из-за указанной по умолчанию точности.Это вынуждает реализацию преобразовывать результат выборки из lowp в mediump.Также необходимо, чтобы diffuse был преобразован в mediump для выполнения умножения.

Это можно исправить, объявив «color» как lowp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...