|
|
{
这一课我会教您如何使用三种不同的纹理滤波方式。
教您如何使用键盘来移动场景中的对象,还会教您在OpenGL场景中应用简单的光照。
这一课包含了很多内容,如果您对前面的课程有疑问的话,先回头复习一下。
进入后面的代码之前,很好的理解基础知识十分重要。
我们还是在第一课的代码上加以修改。
跟以前不一样的是,只要有任何大的改动,我都会写出整段代码。
首先我们还要加进SysUtils单元和Glaux单元。
}
Uses
SysUtils,
opengl,
windows,
Messages,
Glaux In '....GLAUXGlaux.pas';
//下面几行是增加新的变量。
//我们增加三个布尔变量。
// light 变量跟踪光照是否打开。
//变量lp和fp用来存储'L' 和'F'键是否按下的状态。
//后面我会解释这些变量的重要性。现在,先放在一边吧。
light : Boolean; // 光源的开/关
lp : Boolean; // L键按下了么?
fp : Boolean; // F键按下了么?
//现在设置5个变量来控制绕x轴和y轴旋转角度的步长,
//以及绕x轴和y轴的旋转速度。
//另外还创建了一个z变量来控制进入屏幕深处的距离。
xrot : GLfloat; // X 旋转
yrot : GLfloat; // Y 旋转
xspeed : GLfloat; // X 旋转速度
yspeed : GLfloat; // Y 旋转速度
z : GLfloat = -5.0 f; // 深入屏幕的距离
//接着设置用来创建光源的数组。
//我们将使用两种不同的光。
//第一种称为环境光。环境光来自于四面八方。
//所有场景中的对象都处于环境光的照射中。
//第二种类型的光源叫做漫射光。
//漫射光由特定的光源产生,并在您的场景中的对象表面上产生反射。
//处于漫射光直接照射下的任何对象表面都变得很亮,
//而几乎未被照射到的区域就显得要暗一些。
//这样在我们所创建的木板箱的棱边上就会产生的很不错的阴影效果。
//创建光源的过程和颜色的创建完全一致。
//前三个参数分别是RGB三色分量,最后一个是alpha通道参数。
//因此,下面的代码我们得到的是半亮(0.5f)的白色环境光。
//如果没有环境光,未被漫射光照到的地方会变得十分黑暗。
LightAmbient : Array[0..3] Of GLfloat = (0.5, 0.5, 0.5, 1.0); //环境光参数 ( 新增 )
//下一行代码我们生成最亮的漫射光。
//所有的参数值都取成最大值1.0f。
//它将照在我们木板箱的前面,看起来挺好。
LightDiffuse : Array[0..3] Of GLfloat = (1.0, 1.0, 1.0, 1.0); // 漫射光参数 ( 新增 )
//最后我们保存光源的位置。
//前三个参数和glTranslate中的一样。
//依次分别是XYZ轴上的位移。
//由于我们想要光线直接照射在木箱的正面,所以XY轴上的位移都是0.0。
//第三个值是Z轴上的位移。
//为了保证光线总在木箱的前面,
//所以我们将光源的位置朝着观察者(就是您哪。)挪出屏幕。
//我们通常将屏幕也就是显示器的屏幕玻璃所处的位置称作Z轴的0.0点。
//所以Z轴上的位移最后定为2.0。
//假如您能够看见光源的话,它就浮在您显示器的前方。
//当然,如果木箱不在显示器的屏幕玻璃后面的话,您也无法看见箱子。
//『译者注:我很欣赏NeHe的耐心。
//说真的有时我都打烦了,这么简单的事他这么废话干嘛?
//但如果什么都清楚,您还会翻着这样的页面看个没完么?』
&n
[1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页
网友评论:(评论内容只代表网友观点,与本站立场无关!) |
阅读排行
|