解决了困扰一整天的纹理颜色设置的问题
来源:互联网 发布:java求最小公倍数算法 编辑:程序博客网 时间:2024/04/27 15:22
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的初级写法。
- 解决了困扰一整天的纹理颜色设置的问题
- 困扰了一个星期的XML问题终于解决了
- 困扰许久的文泉驿显示慢问题终于解决了
- 终于解决了myeclipse困扰我许久的乱码问题!!
- 困扰半个多月的问题,解决了:(
- 终于解决了一个困扰已久的问题。
- 困扰2个星期的问题终于解决了
- 困扰很久的opencv打不开视频问题终于解决了
- 困扰我多次的内存溢出问题终于解决了
- 困扰一周多的问题总算解决了
- 今天解决了一直困扰我很久的两个问题
- 纯属巧合,解决了一个困扰许久的问题,关于网卡设置时提示“系统找不到指定文件”。
- 解决了困扰多日的Memory Leak
- 解决了个困扰了2天的问题,定点运算问题
- 解决了一个困扰了几个月的问题……令人郁闷……
- 终于解决了一个Win7 下 VS 编译的问题,困扰了我好几个月
- 终于解决了困扰已久的MSN登录问题了
- 一个Refresh()指令解决了困扰了我2天的问题
- Fixchart图表组件——介绍
- 批量解压的方法(2012年4月29日星期日)
- java servlet getParameter
- 等待效果
- arch与win7共存时时间的设置(2012年5月21日星期一)
- 解决了困扰一整天的纹理颜色设置的问题
- Using orientation sensors: Simple Compass sample
- DOM操作---增加节点、增加节点文字、指定位置增加子节点、节点复制、删除一个子节点例子
- 散步 —— 莫怀戚
- JPA开发求助---JPA生成数据表的时候:log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotat
- 天天记录 - Windows 安装Bugzilla(MySQL+ActivePerl+Apache/IIS+Configure Bugzilla)
- mysql 常用架构方案设计
- linux管道
- codeforces 266A