上一篇讲了 精灵如何渲染了 今天就讲下 精灵设置了位置又如何渲染的 因为draw 里面 默认位置是00 点 大家都知道 要设置位置 只能乘以个矩阵
这次我要从shader下手
随便找个shader代码看到
" \n\
attribute vec4 a_position; \n\
attribute vec2 a_texCoord; \n\
attribute vec4 a_color; \n\
\n\
#ifdef GL_ES \n\
varying lowp vec4 v_fragmentColor; \n\
varying mediump vec2 v_texCoord; \n\
#else \n\
varying vec4 v_fragmentColor; \n\
varying vec2 v_texCoord; \n\
#endif \n\
\n\
void main() \n\
{ \n\
gl_Position = CC_MVPMatrix * a_position; \n\
v_fragmentColor = a_color; \n\
v_texCoord = a_texCoord; \n\
} \n\
";
这个是顶点着色器代码
gl_Position = CC_MVPMatrix * a_position;
这个是重点a_position 这个就是我上次说的默认是0 所以不管她 CC_MVPMatrix 这个才是矩阵我们开始找 找到
#define kCCUniformMVPMatrix_s "CC_MVPMatrix"
然后找kCCUniformMVPMatrix_s
m_uUniforms[kCCUniformMVPMatrix] =glGetUniformLocation(m_uProgram,kCCUniformMVPMatrix_s);
然后在找
setUniformLocationWithMatrix4fv(m_uUniforms[kCCUniformMVPMatrix], matrixMVP.mat,1);
找到
matrixMVP.mat
这个是关键 传入矩阵的地方 一看就是struct类型的 mat是4维矩阵
typedef struct kmMat4 {
kmScalar mat[16];
} kmMat4;
kmScalar mat[ 16];这个值怎么赋值的才是关键
这个怎么初始化 留给你们自己去寻找答案吧 找到了 记得留言哦 算是支持我博客
为了让更多的cocos2d-x程序员快速成长 我专门做了个论坛 www.cocos2dxx.com
不管你是来个问问题的还是来打酱油的 都来捧捧场吧
另外本人现在急需在杭州找份工作 试用期内 4K+5险 有意向的公司加我QQ 963529987 求扩散~~