《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)替换,则显示效果如下:
  

posted @ 2010-06-21 17:08  我的一天  阅读(649)  评论(1编辑  收藏  举报