实验一、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、 实验结果 可单击鼠标左键,然后拖动鼠标画出两条直线,并同时画出圆; 可单击鼠标右键,然后拖动鼠标画出两个圆,并同时画出直线。 结果截图: 1. 鼠标左键主要控制绘制的直线: 2. 鼠标右键主要控制绘制的圆: 5、 实验代码 1. #include
2. #include 3. 4. // GLint pNum = 0; 5. GLint px1, py1, px2, py2, cx, cy, r; 6. GLint winWidth=600, winHeight=600; 7. 8. //////////////////画直线//////////// 9. void Draw_Bresenham(int pStartx,int pStarty,int pEndx,int pEndy) 10. {//用Bresenham算法画直线 11. int i; 12. 13. if(pStartx==pEndx) 14. { 15. //为竖线 16. if(pStarty<=pEndy) 17. { 18. for(i=pStarty;i<=pEndy;i++) 19. glVertex2f(pStartx,i); 20. } 21. else 22. { 23. for(i=pEndy;i<=pStarty;i++) 24. glVertex2f(pStartx,i); 25. } 26. 27. return; 28. } 29. 30. //为横线 31. if(pStarty==pEndy) 32. { 33. if(pStartx<=pEndx) 34. { 35. for(i=pStartx;i<=pEndx;i++) 36. glVertex2f(i,pStarty); 37. } 38. else 39. { 40. for(i=pEndx;i<=pStartx;i++) 41. glVertex2f(i,pStarty); 42. } 43. 44. return; 45. } 46. 47. //为斜线 48. float m=(pEndy-pStarty)*1.0/(pEndx-pStartx); 49. float p; 50. 51. p=2*m-1; 52. if(m>0 && m<=1) 53. { 54. if(pStartx=0) 60. { 61. p+=2*m-2; 62. pStarty++; 63. } 64. else 65. p+=2*m; 66....