在我简单的2D游戏中,当使用ES 2.0实现绘图时,我有2倍的帧速率下降。如果使用得当,它是否可以更快或更快?
P.S。如果您对细节感兴趣。我使用非常简单的着色器:
顶点程序:
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;
}
答案 0 :(得分:1)
“color”是一个mediump变量,因为您指定了默认精度。这会强制实现将lowp采样结果转换为mediump。它还要求将漫反射转换为媒体以执行乘法。
您可以通过将“color”声明为lowp来解决此问题。