已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作指导6贴图-樱花飞舞一、 建立工程二、 添加函数和变量public:void mir();/定义镜面显示函数void un2();/定义花瓣void bmptomap();/定义纹理映射方式void mysky();/定义背景贴图FILE * myf;/定义一个贴图文件GLubyte image15125123;定义读取贴图的变量BOOL lkey;/定义动画开关int si;/定义落花瓣的数目float psnow606;/定义60片花瓣的位置、角度CClientDC *my_pDC;CRect my_oldRect;BOOL mytbar;BOOL mysbar;三、 添加消息响应函数OnTimer()。四、 初始化变量CCmyView:CCmyView()/ TODO: add construction code here my_pDC=NULL;mytbar=FALSE;mysbar=FALSE; lkey=TRUE;for(int i=0;i60;i+)psnowi1=1.0f*(rand()-rand()/RAND_MAX;psnowi2=1.0f*(rand()-rand()/RAND_MAX;psnowi0=1.0f*(-rand()/RAND_MAX;psnowi3=90.0f*(rand()-rand()/RAND_MAX;psnowi4=90.0f*(rand()-rand()/RAND_MAX;psnowi5=90.0f*(rand()-rand()/RAND_MAX;si=-59;/打开文件j。bmp,从位图的第54个字节开始是图像信息,将色彩传给imagel/位图要求为23位521*512。if(!(myf=fopen(j.bmp,rb)return;else fseek(myf,54,SEEK_SET); fread(image1,sizeof(unsigned char),512*512*3,myf);五、 建工具栏 ID_BUTTONyh 并添加响应函数:void CCmyView:OnButtonyh() / TODO: Add your command handler code hereif(lkey)SetTimer(1, 120, NULL);elseKillTimer(1);lkey=!lkey;Invalidate(FALSE);六、 加上/ cmyView.cpp : implementation of the CCmyView class/#include stdafx.h#include cmy.h#include MainFrm.h#include Math.h#include cmyDoc.h#include cmyView.h#define ABS(x) (x)0 ? (x) : 0)#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif七、 在OnDraw()中改背景glClearColor(0.2f,0.2f,0.2f,0.9f);八、 在OnCreat()中建立花瓣的显示列表语句int CCmyView:OnCreate(LPCREATESTRUCT lpCreateStruct) if (CView:OnCreate(lpCreateStruct) = -1)return -1;/ TODO: Add your specialized creation code heremyfirst();glNewList(1,GL_COMPILE); un2();glEndList();return 0;九、void CCmyView:OnDestroy() CView:OnDestroy();/ TODO: Add your message handler code hereKillTimer(1);HGLRChrc;hrc = :wglGetCurrentContext(); :wglMakeCurrent(NULL, NULL); if (hrc) :wglDeleteContext(hrc); if (my_pDC) delete my_pDC;十、void CCmyView:OnTimer(UINT nIDEvent) / TODO: Add your message handler code here and/or call defaultif(nIDEvent=1)if(si=59)si=-59;/定义花瓣的数目不超过60for(int i=0;i(60-ABS(si);i+)/花瓣的位置变化if(psnowi1=-0.8f)/花瓣落到底部,重新定义si+;/一片片落下,花瓣增加psnowi0=1.0f*(-rand()/RAND_MAX;psnowi1=1.0f*(rand()/RAND_MAX;psnowi2=1.0f*(rand()-rand()/RAND_MAX;psnowi3=90.0f*(rand()-rand()/RAND_MAX;psnowi4=90.0f*(rand()-rand()/RAND_MAX;psnowi5=90.0f*(rand()-rand()/RAND_MAX;else/花瓣边落下边变化psnowi0=psnowi0+0.02f*(rand()-rand()/RAND_MAX;psnowi1=psnowi1-0.02f;psnowi2=psnowi2+0.02f*(rand()-rand()/RAND_MAX;psnowi3=psnowi5+60.0f*(rand()-rand()/RAND_MAX;psnowi4=psnowi6+60.0f*(rand()-rand()/RAND_MAX;psnowi5=psnowi6+60.0f*(rand()-rand()/RAND_MAX;Invalidate(FALSE);/更新显示CView:OnTimer(nIDEvent);十一、绘画void CCmyView:mydraw()glTranslatef(0.0f,0.0f,-7.0f);/移动到视区内显示glEnable(GL_LINE_SMOOTH);/线与多边形反走样glPushMatrix();glScalef(0.9f,0.9f,0.9f);/调整充满画面mysky();/绘制背景贴图glPopMatrix();for(int i=0;i(60-ABS(si);i+)/绘制60片花瓣glPushMatrix();glTranslatef(psnowi0,psnowi1,psnowi2);glRotated(psnowi3,1.0,0.0,0.0);glRotated(psnowi4,0.0,1.0,0.0);glRotated(psnowi5,0.0,0.0,1.0);glCallList(1);/调用花瓣列表glPopMatrix();glPushMatrix();glScalef(0.8f,1.0f,0.8f);/缩放为长方形glTranslatef(0.8f,0.22f,0.4f);/移动glRotated(-30,0.0,1.0,0.0);/转动mir();/绘制镜子glPopMatrix();glDisable(GL_LINE_SMOOTH);/关闭反走样void CCmyView:mysky()glPushMatrix();glRotated(90,1.0,0.0,0.0);glTexImage2D(GL_TEXTURE_2D,0,3,512,512,0,GL_BGR_EXT,GL_UNSIGNED_BYTE,image1); bmptomap();glBegin(GL_QUADS);glTexCoord2f(0.0f,1.0f);glVertex3f(-2.2f,0.0f,-1.50f);glTexCoord2f(0.0f,0.0f);glVertex3f(-2.2f,0.0f,1.50f);glTexCoord2f(1.0f,0.0f);glVertex3f(2.2f,0.0f,1.5f);glTexCoord2f(1.0f,1.0f);glVertex3f(2.2f,0.0f,-1.5f); glEnd();glPopMatrix();glDisable(GL_TEXTURE_2D);十二、花瓣void CCmyView:un2()float rx=1.0f;float ange1=3.1416f/3.0f;float ange2=0.0f;float k=-14.5;glPushMatrix();glScalef(0.04f,0.04f,0.12f);glTranslatef(-0.5f,-0.5,0.0f);/for(float i=0;i30;i+)ange2=3.1416f/180.0f*i; glShadeModel(GL_SMOOTH); glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); glBegin(GL_QUAD_STRIP); for(float j=0;j=1.5708f)else rx=1.0f-0.01f*(k*k)/14-14)*(1-j/35);glColor3f(rx*rx*sinf(ange1),rx*cosf(ange1)*cosf(ange2)/2,rx*cosf(ange1)*cosf(ange2);glVertex3f(rx*cosf(ange1)*cosf(ange2), rx*sinf(ange1), -rx*cosf(ange1)*sinf(ange2); ange1=3.1416f/3.0f+3.1416f/190.0f*(k+1.0f)*(k+1.0f)/14-14)+3.1416f/180.0f*j; rx=1.0f-0.01f*(k+1.0f)*(k+1.0f)/14-14)*(1-j/35);glVertex3f(rx*cosf(ange1)*cosf(ange2+3.1416f/180.0f), rx*sinf(ange1), -rx*cosf(ange1)*sinf(ange2+3.1416f/180.0f); ; ;glEnd();k=k+1;if(k=15.5) k=-14.5f;glPopMatrix();十三、镜子的绘制void CCmyView:mir()glPushMatrix();GLubyte image35125123;/定义一个临时变量glReadPixels(0,0, /读取屏幕坐标的图像到变量中512,512,GL_RGB,GL_UNSIGNED_BYTE,image3);/将变量映射为纹理glTexImage2D(GL_TEXTURE_2D,0,3,512,512,0,GL_RGB,GL_UNSIGNED_BYTE,image3);/调用纹理控制定义与融合定义函数 bmptomap();/开始绘制镜子/定义纹理坐标的同时定义顶点glBegin(GL_QUADS);glTexCoord2f(1.0f,0.0f);glVertex3f(0.0f,-1.0f,1.0f);glTexCoord2f(1.0f,1.0f);glVertex3f(0.0f,0.0f,1.0f);glTexCoord2f(0.0f,1.0f);glVertex3f(1.0f,0.0f,1.0f);glTexCoord2f(0.0f,0.0f);glVertex3f(1.0f,-1.0f,1.0f); glEnd();/关闭纹理glDisable(GL_TEXTURE_2D);/绘制镜子边,采用平滑渲染 glShadeModel(GL_SMOOTH); glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);/边线模式glLineWidth(4.0f);/线宽/绘制镜子边glBegin(GL_QUADS);glColor3f(0.5f,0.5f,0.0f);glVertex3f(0.0f,-1.0f,1.0f);glVertex3f(0.0f,0.0f,1.0f);glColor3f(1.0f,0.5f,0.0f);glVertex3f(1.0f,0.0f,1.0f);glVertex3f(1.0f,-1.0f,1.0f);glEnd();/恢复平面绘制模式 glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);glPopMatrix();十四、定义纹理控制与融合显示方式void CCmyView:bmptomap()/纹理控制方式定义glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);glTexParameterf(GL_TEXTURE_2D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泵站项目计划采购合同
- 扬州备案合同
- 在中介找工厂合同
- 附停止条件的合同
- 泳池过滤袋采购合同
- 龙口渔船出售转让合同
- 搞假买卖合同
- 荔城区基层服务合同
- 会展业顾问的展会组织策划方案
- 餐厅高效管理方案与菜单规划策略
- 2021广东高考文科数学试题及答案
- 培训机构教师薪酬制度
- 全国青少年机器人技术等级考试:二级培训全套课件
- DFMEA模板(精品文档)
- 西昌基本气候情况
- 医保医师记分管理办法考试试题
- 授课资料贯彻落实国家档案馆档案开放办法清新风2022年新制订《国家档案馆档案开放办法》PPT模板
- 口腔四手操作规范(课堂PPT)
- 压力容器质量证明书(中英文)
- 新浙教版七年上册科学一、二章实验探究题训练(含答案)87009
- Dynaform软件的板料冲压成形操作指引
评论
0/150
提交评论