解决了困扰一整天的纹理颜色设置的问题
解决了困扰一整天的纹理颜色设置的问题
最新推荐文章于 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://www.mcbbbk.com/newsview1041135.html
| 上一篇: 为什么家养仓鼠适合蚂蚁庄园?如何... | 下一篇: 如何为仓鼠提供理想的生活环境与细... |





