`
dato0123
  • 浏览: 906756 次
文章分类
社区版块
存档分类
最新评论

《OpenGL编程指南》示例笔记(2)--独立地移动光源

 
阅读更多

//=====================================================================
//TITLE:
// 《OpenGL编程指南》示例笔记(2)--独立地移动光源
//AUTHOR:
// norains
//DATE:
// Monday 21-June-2010
//Environment:
// Windows XP
//=====================================================================

示例概述

例名:独立地移动光源

序号:5-6

页码:P135

源代码:

程序运行后的图像确实有点丑:


  不知道为啥,源代码特别不喜欢很圆的圆,莫非是作者的机器配置不够?在做实验之前,还是老样子,将圆变得圆滑点。我们将glutSolidTorus的最后一个形参的数值更改为60,即:glutSolidTorus(0.275, 0.85, 8, 60);
  
  这时候程序跑起来的圆环就圆滑多了:
  
  
  
  
  点击两下鼠标,移动一下光源,看看效果:
  
  
  呵呵,有点像手镯。
  
  
  
  不过,原程序的渐进梯度太广了,只是点击几次就绕了一圈。其实可以更改代码中的spin = (spin + 30) % 360这句。我们将30改成5,那么渐进的梯度就小了。
  
  如图所示:
  
  
  光源移动到了之前原代码没有能到达的区域。
  
  
  
  不过,用鼠标移动光源实在没啥意思,不如让程序自动来移动光源吧!
  
  我们先定义一个Idle函数:

  
  然后在glutMainLoop之前添加这么一段代码:
  
  
  那么,我们现在的光源就可以自动移动啦。只不过,我所用的电脑的显卡可能性能不是很好,以代码所执行的速度,有破碎的现象:
  
  
  
  
  其实我们也可以用5.1示例中的圆球,也能测试到不一样的光源效果。我们将代码中的glutSolidTorus(0.275, 0.85, 8, 60)以glutSolidSphere(1.0, 300, 16)替换,则显示效果如下:
  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics