cocos2dx中 Node 在shader使用v_texCoord
来源:互联网 发布:淘宝论坛官网 编辑:程序博客网 时间:2024/05/17 18:19
1. drawNode 的fsh中无法使用v_texCoord,原因在于
void DrawNode::drawPolygon{}函数中的给顶点数组赋值的时候,__t(v2fzero)赋值给了V2F_C4B_T2F的T2F,因此TexCoords都是0.0f;
for (int i = 0; i < count-2; i++)
{
V2F_C4B_T2F_Triangle tmp = {
{verts[0], Color4B(fillColor), __t(v2fzero)},
{verts[i+1], Color4B(fillColor), __t(v2fzero)},
{verts[i+2], Color4B(fillColor), __t(v2fzero)},
};
*cursor++ = tmp;
}
2. 在Sprite中,TexCoords的值是(0,0)到(1,1)。在函数void Sprite::setTextureCoords(Rect rect)中进行赋值。
_quad.bl.texCoords.u = left;
_quad.bl.texCoords.v = top;
_quad.br.texCoords.u = left;
_quad.br.texCoords.v = bottom;
_quad.tl.texCoords.u = right;
_quad.tl.texCoords.v = top;
_quad.tr.texCoords.u = right;
_quad.tr.texCoords.v = bottom;
3. 因此,想要在Node的shader中使用到v_texCoord,需要在调用gldrawarray的之前,绑定texCoords值。
typedef struct {
float Position[2];
float Color[4];
float TexCoords[2];
} Vertex;
Vertex _quad[6];
void VRMaskNode::initQuad()
{
_quad[0] = { { 0,0 },{ 0,1,0,1 },{0,0} };
_quad[1] = { { _visibleSize.width,0 },{ 0,1,1,1 } ,{1,0} };
_quad[2] = { { 0,_visibleSize.height },{ 0,1,1,1 },{ 0,1 } };
_quad[3] = { { 0,_visibleSize.height },{ 0,1,1,1 },{ 0,1 } };
_quad[4] = { { _visibleSize.width,0 },{ 0,1,1,1 } ,{ 1,0 } };
_quad[5] = { { _visibleSize.width,_visibleSize.height },{ 0,1,1,1 },{ 1,1 } };
}
GL::enableVertexAttribs(GL::VERTEX_ATTRIB_FLAG_POSITION | GL::VERTEX_ATTRIB_FLAG_COLOR | GL::VERTEX_ATTRIB_FLAG_TEX_COORD);
glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION,
2, GL_FLOAT, GL_FALSE, sizeof(Vertex),
(GLvoid*)offsetof(Vertex, Position));
glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_COLOR,
4, GL_FLOAT, GL_FALSE, sizeof(Vertex),
(GLvoid*)offsetof(Vertex, Color));
glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_TEX_COORD,
2, GL_FLOAT, GL_FALSE, sizeof(Vertex),
(GLvoid*)offsetof(Vertex, TexCoords));
glDrawArrays(GL_TRIANGLES, 0, 6);
0 0
- cocos2dx中 Node 在shader使用v_texCoord
- 在Cocos2dx 3.10中第一次使用shader
- Cocos2dx-JS 在 Sprite 上使用 Shader
- cocos2dx中shader的CC_Time的使用
- cocos2dx中shader的CC_Random01的使用
- 六 cocos2dx(3.X)中使用shader
- 转 自动Shader优化器glsl_optimizer的编译与在cocos2dx中使用
- cocos2dx Shader的使用
- cocos2dx使用自定义shader
- 在cocos2d中使用shader
- 在Unity中使用Shader
- 在 Shader 中使用四元数
- Unity Shader 在Shader中使用法线贴图
- 在node-webkit中使用node modules
- 怎么在unity中使用 glsl shader
- 在node中使用mongodb
- 在node中使用 ES6
- cocos2dx shader在android上失效
- 数据库索引的实现原理
- python 2.7 的urllib模块中文
- 浮动状态栏 FloatControlBar()
- POJ 1182 食物链 分类并查集
- stm32之USART串口配置
- cocos2dx中 Node 在shader使用v_texCoord
- C#Winfrom 验证当前网络是否通常
- ELK 部署指南
- Java中的变量
- ubuntu14.04桌面版关闭图形界面
- 利用CSS3的伪类画表格
- 一台电脑重装 MAC OS
- Sqlite中存储Boolean和boolean对象,分别使用boolean和text类型
- 【解题报告】2014ACM/ICPC亚洲区北京站