实验二OpenGL颜色填充.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二OpenGL颜色填充

实验二、OpenGL颜色填充 1、 实验目的 1)了解OpenGL 图形库的功能和结构; 2)学习了解OpenGL 程序的基本结构,及常用函数; 3)学习使用OpenGL 颜色填充算法; 2、 实验内容 1)使用OpenGL 编写一个简单的C++程序,使该程序能够填充多边形和圆等图形。 2 )使用OpenGL 编写一个简单的C++程序,使该程序能够填充已填充过的图形。 3、 实验过程 1)在系统上配置好OpenGL的环境(头文件,库文件,和链接库文件); 2)使用Visual V++6.0 新建一个C++文档,并创建相应的工程; 3)在文档中引入OpenGL的头文件,编辑代码实现:对不同图形的不同颜色填充。 4、 实验结果 可单击鼠标左键,填充选中的图形; 可单击鼠标右键,调出菜单,可改变填充颜色,可恢复为填充状态。 结果截图: 初始状态: 填充多边形: 调出菜单,选择颜色: 填充圆形: 填充已填充的图形: 5、 实验代码 #include stdio.h #include GL/glut.h #include math.h #include windows.h ////////////程序还有问题,不知如何解决 ////////圆周率 const GLfloat Pi = 3.1415926536f; ///////////窗口长宽 GLfloat WinWidth=600.0, WinHeight=600.0; //////////种子点 GLint fillx,filly; ////////填充色 GLubyte fillColor[3]={255,0,255}; /////////判定点色 GLubyte Pixel[3]; /////////取点色 GLubyte OldColor[3]; //////////绘制初始化 void init(void) { glClearColor(1.0, 1.0, 1.0, 1.0) ; glViewport(0,0,WinWidth,WinHeight); glMatrixMode(GL_PROJECTION); ///////调用单位矩阵,去掉以前的投影参数设置 glLoadIdentity(); gluOrtho2D(0.0, WinWidth, 0.0, WinHeight); } //////////比较颜色是否相同 bool EqualColor(GLubyte c1[],GLubyte c2[]){ if(c1[0]==c2[0]c1[1]==c2[1]c1[2]==c2[2]) return true; else return false; } ///////////填充点色 void setPixel(GLint x,GLint y){ glColor3f(fillColor[0], fillColor[1], fillColor[2]); glBegin(GL_POINTS); glVertex3f(x,y,0.0); glEnd(); } //////////////种子填充函数,四联通,递归 void fill(GLint x, GLint y){ glReadPixels(x,y,1,1,GL_RGB,GL_UNSIGNED_BYTE,Pixel); if(EqualColor(fillColor,OldColor)) return; setPixel(x,y); //Sleep(1); glReadPixels(x,y-1,1,1,GL_RGB,GL_UNSIGNED_BYTE,Pixel); if(EqualColor(Pixel,OldColor)) {fill(x,y-1); } glReadPixels(x-1,y,1,1,GL_RGB,GL_UNSIGNED_BYTE,Pixel); if(EqualColor(Pixel,OldColor)) {fill(x-1,y); } glReadPixels(x+1,y,1,1,GL_RGB,GL_UNSIGNED_BYTE,Pixel); if(EqualColor(Pixel,OldColor)) {fill(x+1,y); } glReadPixels(x,y+1,1,1,GL_RGB,GL_UNSIGNED_BYTE,Pixel); if(EqualColor(Pixel,OldColor)) {fill(x,y+1); } ////////// return; } ///////////////////画圆函数

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档