首页 > 分享 > 解决了困扰一整天的纹理颜色设置的问题

解决了困扰一整天的纹理颜色设置的问题

解决了困扰一整天的纹理颜色设置的问题

最新推荐文章于 2024-05-05 22:58:07 发布

langresser 于 2013-02-03 22:42:19 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

1、用途:我把cocos2d生成的文字字形缓存起来以提高效率,没有走CCLabelTTF--CCSprite那套,而是直接使用CCTexture2D::drawAtPoint绘制到屏幕上。所以一个纹理要直接支持颜色设置(把文字绘制成不同颜色)。

2、基本流程: 

     a、纹理创建的时候使用  setShaderProgram(CCShaderCache::sharedShaderCache()->programForKey(kCCShader_PositionTextureColor));  设置shader

     b、draw的时候先开启颜色设置   ccGLEnableVertexAttribs( kCCVertexAttribFlag_Position | kCCVertexAttribFlag_TexCoords | kCCVertexAttribFlag_Color);

     c、启用shader

if (m_pShaderProgram) {

m_pShaderProgram->use();

m_pShaderProgram->setUniformsForBuiltins();

}

     d、把颜色值传入:  glVertexAttribPointer(kCCVertexAttrib_Color, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, colors);

可见,opengles2.0之后,万事万物皆shader,设置纹理颜色本质上还是通过shader来完成的。

3、最开始出现的bug:  纹理颜色不正确,并且文字毛边很严重,怎么修改shader都不对。

4、Bug出现的原因: 没有理解 glVertexAttribPointer第四个参数的含义,colors是CLByte类型,但是这个参数传递的又是GL_FALSE,修改为GL_TRUE后正常。

5、反思:其实可以更快的找到问题,因为生产字形的过程跟原来一模一样,所以只要仔细比对下CCSprite的Draw函数和修改后的Draw函数就可以发现问题。

6、收获:通过查Bug的过程理解了shader的调用过程和shader的初级写法。

相关知识

解决了困扰一整天的纹理颜色设置的问题
三招解决宠物掉毛的困扰
漂亮的翠鸟羽毛纹理
如何解决狗狗毛发之扰人的问题(减轻家庭宠物带来的不便与困扰)
泰迪身上皮屑的困扰,轻松解决的小秘诀
求助!类目里面没有颜色分类设置的,请问要怎么办才可以有?
宠物皮肤问题不用愁,专业团队为你解决一切困扰
如何解决狗狗泪痕处脱毛问题(宠物爱好者必读,让您的爱犬摆脱泪痕困扰)
水彩画中水的艺术表现力探析:形态、纹理、色彩、光影与情感
blender 爬行动物皮肤表皮材质球纹理贴图下载

网址: 解决了困扰一整天的纹理颜色设置的问题 https://m.mcbbbk.com/newsview1041135.html

所属分类:萌宠日常
上一篇: 为什么家养仓鼠适合蚂蚁庄园?如何
下一篇: 如何为仓鼠提供理想的生活环境与细