根据四个点 渲染图片的Sprite
来源:互联网 发布:孔浩 java百度云 编辑:程序博客网 时间:2024/04/28 21:09
class QuadSprite : public CCSprite{ public: static QuadSprite* createQuadSprite(ccVertex2F *vertexs,CCTexture2D* texture); bool initWithVertices(ccVertex2F *vertexs); virtual void draw();private: // 需要提供四个点 // 顺序为 // 0 leftUp // 1 leftDown // 2 RightUp // 3 RightDown ccVertex2F mVertexs[4];};
#include "QuadSprite.h"//三角形索引const static unsigned short kIndices[6] = {0,1,2,1,3,2};const static ccVertex2F kUVS[] = { {0.0,0.0}, {0.0,1.0}, {1.0,0.0}, {1.0,1.0}};const static unsigned char kColors[] = {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,};QuadSprite* QuadSprite::createQuadSprite(ccVertex2F* vertexs,CCTexture2D* texture){ QuadSprite* bob = new QuadSprite; if (bob && bob->initWithTexture(texture) && bob->initWithVertices(vertexs)) { bob->autorelease(); return bob; } CC_SAFE_DELETE(bob); return NULL;}bool QuadSprite::initWithVertices(ccVertex2F *vertexs){ // 内存分配 for (int i = 0; i < 4; ++i) { mVertexs[i].x = vertexs[i].x; mVertexs[i].y = vertexs[i].y; } return true;}// 设置纹理坐标//m_sQuad.bl.texCoords.u = 0.0;//m_sQuad.bl.texCoords.v = 1.0;////m_sQuad.br.texCoords.u = 1.0;//m_sQuad.br.texCoords.v = 1.0;////m_sQuad.tl.texCoords.u = 0.0;//m_sQuad.tl.texCoords.v = 0.0;////m_sQuad.tr.texCoords.u = 1.0;//m_sQuad.tr.texCoords.v = 0.0;void QuadSprite::draw(){ CC_NODE_DRAW_SETUP(); ccGLBlendFunc( m_sBlendFunc.src, m_sBlendFunc.dst ); if (m_pobTexture != NULL) { ccGLBindTexture2D( m_pobTexture->getName() ); } else { ccGLBindTexture2D(0); } // // Attributes // ccGLEnableVertexAttribs(kCCVertexAttribFlag_PosColorTex); //顶点,纹理,颜色 glVertexAttribPointer(kCCVertexAttrib_Position, 2, GL_FLOAT, GL_FALSE, 0, mVertexs); glVertexAttribPointer(kCCVertexAttrib_TexCoords, 2, GL_FLOAT, GL_FALSE, 0, kUVS); glVertexAttribPointer(kCCVertexAttrib_Color, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, kColors); //根据索引draw三角形 glDrawElements(GL_TRIANGLES,6, GL_UNSIGNED_SHORT, kIndices); CHECK_GL_ERROR_DEBUG(); CC_INCREMENT_GL_DRAWS(1);}
使用示例:
// ccVertex2F mVertices[] = {// {100,100},// {100,50},// {300,100},// {300,50},// };// QuadSprite* qsp = QuadSprite::createQuadSprite(mVertices, mTex);// qsp->setAnchorPoint(ccp(0, 0));// addChild(qsp);
- 根据四个点 渲染图片的Sprite
- 渲染图片上的多个点的Sprite
- 根据四个点坐标求两个直线的交叉点坐标
- 根据四个角点计算其他点的值.使之平均
- html中轮播时,四个圆点和四个图片对应显示的情况
- CSS的sprite图片处理
- 用Starling渲染Sprite
- Replacing image in sprite 修改sprite的图片
- unity3d 更换sprite renderer中sprite的图片
- unity3d 更换sprite renderer中sprite的图片
- 根据四个特征点求解相机位姿
- KING_UNITY学习之Unity2D代码动态为Sprite Renderer的Sprite赋值sprite精灵图片
- iOS图片的渲染
- 图片渲染的应用
- 【UnityShader】设置Image组件图片透明四个方向透明渐变(Sprite原理相同)
- Unity导出切割后的Sprite图片
- 关于echarts的地图的渲染,根据一个值去判断地图上的点是否该报警!
- geoserver点样式研究——特定图片渲染点
- Linux之NiosSOC创建
- 黑马程序员 网络编程
- sql 拼接xml
- View 5部署之六:Connection Server安装与配置
- mongodb数据库备份与恢复
- 根据四个点 渲染图片的Sprite
- 阿拉伯数字转汉字数字,如386转三百八十六
- 用Python写的图片蜘蛛人代码
- ExtJS学习笔记(二)
- Python利用xlwt写Excel文件
- HDOJ 4722 - Good Numbers 数位dp
- 使用MCI接口播放音乐
- C++ ofstream和ifstream详细用法
- 图:智能手机Android系统的评委评分的比赛打分客户端,开发构思中...,可以和管理员电脑协同完成打分展示工作