浅解cocos2d-x中的CCSprite绘制原理
来源:互联网 发布:最好网络投资理财 编辑:程序博客网 时间:2024/04/28 12:07
cocos2d-x版本为2.0.4
此画图调用的是opengl es 2.0版本,支持三角形画图。故必须有一个顶点数组。此定义定义在CCSprite.h中
ccV3F_C4B_T2F_Quad m_sQuad;
而这个顶点数组的定义为
//! 4 ccVertex3FTex2FColor4Btypedef struct _ccV3F_C4B_T2F_Quad{ //! top left ccV3F_C4B_T2F tl; //! bottom left ccV3F_C4B_T2F bl; //! top right ccV3F_C4B_T2F tr; //! bottom right ccV3F_C4B_T2F br;} ccV3F_C4B_T2F_Quad;
顶点分布如图所示
Cocos2d-x的画图均在自身节点的draw(void)下面。
1 // m_pobTexture 为当前CCSprite绑定的纹理图 2 if (m_pobTexture != NULL) 3 { 4 ccGLBindTexture2D( m_pobTexture->getName() ); 5 } 6 else 7 { 8 ccGLBindTexture2D(0); 9 }10 11 //启用顶点数组画图模式12 ccGLEnableVertexAttribs( kCCVertexAttribFlag_PosColorTex );13 //设置每个顶点数的大小14 #define kQuadSize sizeof(m_sQuad.bl)15 long offset = (long)&m_sQuad;16 17 // vertex18 int diff = offsetof( ccV3F_C4B_T2F, vertices);19 glVertexAttribPointer(kCCVertexAttrib_Position, 3, GL_FLOAT, GL_FALSE, kQuadSize, (void*) (offset + diff));20 21 // texCoods22 diff = offsetof( ccV3F_C4B_T2F, texCoords);23 glVertexAttribPointer(kCCVertexAttrib_TexCoords, 2, GL_FLOAT, GL_FALSE, kQuadSize, (void*)(offset + diff));24 25 // color26 diff = offsetof( ccV3F_C4B_T2F, colors);27 glVertexAttribPointer(kCCVertexAttrib_Color, 4, GL_UNSIGNED_BYTE, GL_TRUE, kQuadSize, (void*)(offset + diff));28 29 //这一步为确认画图,根据当前绑定的纹理图,然后根据当前的顶点数组进行画图30 glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
GL_TRIANGLE_STRIP
- OpenGL 的使用将最开始的两个顶点出发,然后遍历每个顶点,这些顶点将使用前2个顶点一起组成一个三角形。
所以画图的顺序为 V0-V1-V2 及 V1-V2-V3两个三角形,这样就画出我们想展示的图形
- 浅解cocos2d-x中的CCSprite绘制原理
- cocos2d-x 中的 CCSprite
- Cocos2d-X中的CCSprite
- Cocos2d-x-->CCSprite 动画
- cocos2d-x ccsprite 详解
- cocos2d中的ccsprite使用
- Cocos2d中的CCSprite
- Cocos2d中的CCSprite
- Cocos2d-x中的draw绘制
- cocos2d-x如何反白高亮CCSprite
- cocos2d-x学习:CCSprite总结
- cocos2d-X CCsprite点击问题
- [cocos2d-x] --- CCSprite类详解
- cocos2d-x学习之CCSprite
- cocos2d-x学习:CCSprite总结
- cocos2d-x学习:CCSprite总结
- cocos2d-x学习:CCSprite总结
- cocos2d-x 中CCScene CCLayer CCSprite CCNode
- 设计一个程序,在顺序表中采用分块查找发查找关键字。
- [Java] IO-04 打印流 PrintStream 语言促进人的思维 扩展眼界 : log4j
- 15周问题8
- 软件编码
- 【cocos2d-x IOS游戏开发-城市跑酷3】读取资源,设置背景层
- 浅解cocos2d-x中的CCSprite绘制原理
- 梦想起航
- 【cocos2d-x IOS游戏开发-城市跑酷2】python create_project
- 一个有趣的心理测试
- 主板上的内存插槽颜色到底代表了什么意思?
- redis 部署
- 编写一个使用数组类模板Array对数组进行排序、求最大值和求元素和的程序,并采用相关数据进行测试。
- Android Bundle类
- Windows 共享无线上网 无法启动ICS服务解决方法(WIN7 ICS服务启动后停止)