使用 shader setUniformLocationWith4f 遇 到 问 题

(之前的问题编辑乱了)

我想使用 着色器 做个一个平铺的9宫格,在使用 setUniformLocationWith4f 遇到问题, 请问我哪里写错了

着色器代码

#ifdef GL_ES 
precision mediump float;
#endif

uniform vec4 u_insets;
varying vec2 v_texCoord;
varying vec4 v_color;

void main(void)
{
float oX = 0.25000;//u_insets.x;
float oY = 0.34375;//u_insets.y;
float oW = 0.03125;//u_insets.z;
float oH = 0.15625;//u_insets.w;

vec2 texC = v_texCoord;
texC.x = texC.x - oX;
texC.y = texC.y - oY;
texC.x = mod(texC.x, oW);
texC.y = mod(texC.y, oH);
texC.x = texC.x + oX;
texC.y = texC.y + oY;
vec4 col = texture2D(CC_Texture0, texC);

gl_FragColor = v_color * col;
}

<p> </p>
<p><span style=""""color:#333333;font-family:arial;font-size:14px;line-height:normal;""""><br />
</span></p>
<p><span style=""""color:#333333;font-family:arial;font-size:14px;line-height:normal;"""">c++代码</span></p>
<p></p>
<pre class=""""brush:cpp;""" toolbar:="""""" true;="""""" auto-links:="""""" false;"="""""">Texture2D::TexParams texParam; 
texParam.magFilter = GL_LINEAR; 
texParam.minFilter = GL_NEAREST; 
texParam.wrapS = GL_REPEAT;
texParam.wrapT = GL_REPEAT;
Texture2D* tex = frame->getTexture();
tex->setTexParameters(texParam);

Size oSize = tex->getContentSize(); 
float invSx = 1 / oSize.width; 
float invSy = 1 / oSize.height; 
float x = (mOriginRect.origin.x + mLeftPadding)*invSx; 
float y = (mOriginRect.origin.y + mTopPadding)*invSy; 
float w = mInnerWidth*invSx; 
float h = mInnerHeight*invSy; 

x = 0.25000; 
y = 0.34375; 
w = 0.03125; 
h = 0.15625; 

GLProgram* pro = createProgram(); 
GLint insetsLocation = pro->getUniformLocation("u_insets"); 

pro->setUniformLocationWith4f(insetsLocation, x, y, w, h); 

log("location:%d", insetsLocation);

原图


左图: 在着色器里面使用 数值的效果(还没做边) 右图:Scale9Sprite


问题是

使用 pro->setUniformLocationWith4f(insetsLocation, x, y, w, h); 无法获取正确值