在这一课里,我们在纹理的基础上加上了混合,它看起具有透明的效果。
具体的理论资料大家如果有兴趣可以看一下《交互式计算机图形学-基于OpenGL的自顶向下的设计方法》第四版的第381页-383页。上面叙述的很清楚。这里暂时将代码粘在这,以后有时间的话用到的地方我会简单的做些说明。
为了和Nehe的教程保持一致,这里我采用的是Nehe教程中的纹理映射图像,glass.bmp(附件的源码中有),并且这里我对Nehe的教程进行了扩展,你可以看到光源和物体的不同位置关系的混合特效。
1 在Form构造函数中填入了以下代码
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
2 加入以下成员变量
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
3 加入Key的响应函数,使B键成为混合的开关。
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
4 最终的执行效果
1>运行Load完毕
![](https://i-blog.csdnimg.cn/blog_migrate/8660f08dfffb70814eed4dae4d0a33e8.png)
2>按住K键调整光源深度,可以看到物体亮度增加
![](https://i-blog.csdnimg.cn/blog_migrate/6404c4724688f4ff5be5e9abda3fdd32.png)
3>按下B键,开启混合效果,看到这时的效果不明显。
![](https://i-blog.csdnimg.cn/blog_migrate/6858d0c4fc32ce52eec8e457aa96700c.png)
4>按住L键向右侧调整光源,这时能看到如下透视效果
![](https://i-blog.csdnimg.cn/blog_migrate/201759e6c7ac2aae180dec21d83f476c.png)
5>按下J键向左调整光源可以看到如下效果
![](https://i-blog.csdnimg.cn/blog_migrate/734efebf00c301e03573977a72f8d5e6.png)
6>按住I键向屏幕内侧调整光源这时可以看到如下效果
![](https://i-blog.csdnimg.cn/blog_migrate/226bb69bfcbbc04e65705487002e9c86.png)
7 > 按住D键向右调整物体可以看到如下效果
![](https://i-blog.csdnimg.cn/blog_migrate/020a83e6e957547a0e30984b15ec4ec6.png)
转载于:https://blog.51cto.com/crazylove/174321