打印本文 打印本文 关闭窗口 关闭窗口
NeHe的opengl教程delphi版(7)----滤波
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3091  更新时间:2009/4/23 18:37:25  文章录入:mintao  责任编辑:mintao
p;     // 法线向上
   glTexCoord2f(0.0, 1.0);
   glVertex3f(-1.0, 1.0, -1.0);         // 纹理和四边形的左上
   glTexCoord2f(0.0, 0.0);
   glVertex3f(-1.0, 1.0, 1.0);          // 纹理和四边形的左下
   glTexCoord2f(1.0, 0.0);
   glVertex3f(1.0, 1.0, 1.0);           // 纹理和四边形的右下
   glTexCoord2f(1.0, 1.0);
   glVertex3f(1.0, 1.0, -1.0);          // 纹理和四边形的右上
   // 底面
   glNormal3f(0.0, -1.0, 0.0);          // 法线朝下
   glTexCoord2f(1.0, 1.0);
   glVertex3f(-1.0, -1.0, -1.0);        // 纹理和四边形的右上
   glTexCoord2f(0.0, 1.0);
   glVertex3f(1.0, -1.0, -1.0);         // 纹理和四边形的左上
   glTexCoord2f(0.0, 0.0);
   glVertex3f(1.0, -1.0, 1.0);          // 纹理和四边形的左下
   glTexCoord2f(1.0, 0.0);
   glVertex3f(-1.0, -1.0, 1.0);         // 纹理和四边形的右下
   // 右面
   glNormal3f(1.0, 0.0, 0.0);           // 法线朝右
   glTexCoord2f(1.0, 0.0);
   glVertex3f(1.0, -1.0, -1.0);         // 纹理和四边形的右下
   glTexCoord2f(1.0, 1.0);
   glVertex3f(1.0, 1.0, -1.0);          // 纹理和四边形的右上
   glTexCoord2f(0.0, 1.0);
   glVertex3f(1.0, 1.0, 1.0);           // 纹理和四边形的左上
   glTexCoord2f(0.0, 0.0);
   glVertex3f(1.0, -1.0, 1.0);          // 纹理和四边形的左下
   // 左面
   glNormal3f(-1.0, 0.0, 0.0);          // 法线朝左
   glTexCoord2f(0.0, 0.0);
   glVertex3f(-1.0, -1.0, -1.0);        // 纹理和四边形的左下
   glTexCoord2f(1.0, 0.0);
   glVertex3f(-1.0, -1.0, 1.0);         // 纹理和四边形的右下
   glTexCoord2f(1.0, 1.0);
   glVertex3f(-1.0, 1.0, 1.0);          // 纹理和四边形的右上
   glTexCoord2f(0.0, 1.0);
   glVertex3f(-1.0, 1.0, -1.0);         // 纹理和四边形的左上
   glEnd();

   xrot := xrot + xspeed;               // xrot 增加 xspeed 单位
   yrot := Yrot + yspeed;               // yrot 增加 yspeed 单位
End;

//现在转入WinMain()主函数。
               //我们将在这里增加开关光源、旋转木箱、切换过滤方式以及将木箱移近移远的控制代码。
               //在接近WinMain()函数结束的地方你会看到SwapBuffers(hDC)这行代码。
               //然后就在这一行后面添加如下的代码。
               //代码将检查L键是否按下过。
               //如果L键已按下,但lp的值不是false的话,意味着L键还没有松开,这时什么都不会发生。
               SwapBuffers(h_DC);       // 交换缓存 (双缓存)

               If (keys[ord(''''L'''')] And Not lp) Then
                  Begin
                     //如果lp的值是false的话,
                     //意味着L键还没按下,或者已经松开了,接着lp将被设为TRUE。
                     //同时检查这两个条件的原因是为了防止L键被按住后,
                     //这段代码被反复执行,并导致窗体不停闪烁。
                     //lp设为true之后,计算机就知道L键按过了,
                     //我们则据此可以切换光源的开/关:布尔变量light控制光源的开关。
                     lp := true;        // lp 设为 TRUE
                     light := Not light; // 切换光源的 TRUE/FALSE
                     If Not light Then  // 如果没有光源
                        glDisable(GL_LIGHTING) //禁用光源
                     Else               // Otherwis
                        glEnable(GL_LIGHTING); //启用光源
                  End;
               If Not keys[ord(''''L'''')] Then //L键松开了么?
                  lp := FALSE;          // 若是,则将lp设为FALSE

               //然后对"F"键作相似的检查。
               //如果有按下"F"键并且"F"键没有处于按着的状态或者它就从没有按下过,
               //将变量fp设为true。这意味着这个键正被按着呢。
               //接着将filter变量加一。如果filter变量大于2
               //(因为这里我们的使用的数组是texture[3],大于2的纹理不存在),
               //我们重置filter变量为0。
               If (keys[ord(''''F'''')] And Not fp) Then // F键按下了么?
                  Begin
                     fp := TRUE;        // fp 设为 TRUE
                     inc(filter);       // filter的值加一
                     If filter > 2 Then // 大于2了么?
                        filter := 0;    // 若是重置为0
                  End;
               If Not keys[ord(''''F'''')] Then //F键放开了么?
                  fp := FALSE;          // 若是fp设为FALSE

               //这四行检查是否按下了PageUp键。若是的话,减少z变量的值。这样DrawGLScene函数中包含的glTranslatef(0.0f,0.0f,z)调用将使木箱离观察者更远一点。
               If keys[VK_PRIOR] Then   //PageUp按下了?
                  z := z - 0.02;        // 若按下,将木箱移向屏幕内部。
               //接着四行检查PageDown键是否按下,若是的话,增加z变量的值。这样DrawGLScene函数中包含的glTranslatef(0.0f,0.0f,z)调用将使木箱向着观察者移近一点。
               If keys[VK_NEXT] Then    // PageDown按下了么?
                  z := z + 0.02;        //若按下的话,将木箱移向观察者。

               //现在检查方向键。按下左右方向键xspeed相应减少或增加。
               //按下上下方向键yspeed相应减少或增加。
         &

上一页  [1] [2] [3] [4]  下一页

打印本文 打印本文 关闭窗口 关闭窗口