下面进入正题:
首先是扩大包围盒大小,其实有两种方案来做。
一是直接设置缩放,只不过这个方法会和原来的缩放混淆,容易导致混乱。
二是在顶点shader修改顶点的位置,我们就是用得这个方法。代码如下:
attribute vec4 a_position;
attribute vec2 a_texCoord;
varying vec2 v_texCoord;
uniform float scale_factor;
uniform vec2 mid_point;
void main()
{
v_texCoord = a_texCoord;
mat4 mt_trans_1 = mat4(1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, -mid_point.x,-mid_point.y,0.0,1.0);
mat4 mt_scale = mat4(scale_factor,0.0,0.0,0.0, 0.0,scale_factor,0.0,0.0, 0.0,0.0,scale_factor,0.0, 0.0,0.0,0.0,1.0);
mat4 mt_trans_2 = mat4(1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, mid_point.x,mid_point.y,0.0,1.0);
gl_Position = CC_PMatrix*mt_trans_2*mt_scale*mt_trans_1*a_position;
}
scale_factor是缩放系数,一般是要大于1.0,mid_point是外部代码传进来的包围盒中点在世界坐标系下的位置