您现在的位置: 中国教师站 >> 教师关注 >> 电脑技术 >> 编程技术 >> Delphi >> 正文

Google
NeHe的opengl教程delphi版(1)----基本框架
作者:Siny 文章来源:中国教师站cn-teacher 点击数: 更新时间:2007-4-22 15:51:28
   glLoadIdentity();                    // 重置模型观察矩阵

   //如果现在还不能理解这些术语的含义,请别着急。
   //只要知道如果想获得一个精彩的透视场景的话,必须这么做。
End;

//==============================================================================
// 对OpenGL进行所有的设置。将设置清除屏幕所用的颜色,打开深度缓存,
// 启用smooth shading(阴影平滑),等等。这个例程直到OpenGL窗口创建之后才会被调用。
// 此过程将有返回值。但此处的初始化没那么复杂,现在还用不着担心这个返回值。
//==============================================================================

Procedure glInit();
Begin

   //设置清除屏幕时所用的颜色。如果对色彩的工作原理不清楚的话,快速解释一下。
   //色彩值的范围从0.0f到1.0f。0.0f代表最黑的情况,1.0f就是最亮的情况。
   //glClearColor 后的第一个参数是Red Intensity(红色分量),第二个是绿色,第三个是蓝色。
   //最大值也是1.0f,代表特定颜色分量的最亮情况。最后一个参数是Alpha值。
   //当它用来清除屏幕的时候,不用关心第四个数字。现在让它为0.0f。
   //通过混合三种原色(红、绿、蓝),可以得到不同的色彩
   //因此,使用glClearColor(0.0f,0.0f,1.0f,0.0f),您蓝色来清除屏幕。
   //如果用 glClearColor(0.5f,0.0f,0.0f,0.0f)的话,将使用中红色来清除屏幕。
   //不是最亮(1.0f),也不是最暗 (0.0f)。要得到白色背景,应该将所有的颜色设成最亮(1.0f)。
   //要黑色背景的话,该将所有的颜色设为最暗(0.0f)。

   glClearColor(0.0, 0.0, 0.0, 0.0);    // 黑色背景

   //阴影平滑通过多边形精细的混合色彩,并对外部光进行平滑。

   glShadeModel(GL_SMOOTH);             // 启用阴影平滑

   //接下来必须做的是关于depth buffer(深度缓存)的。将深度缓存设想为屏幕后面的层。
   //深度缓存不断的对物体进入屏幕内部有多深进行跟踪。本程序其实没有真正使用深度缓存,
   //但几乎所有在屏幕上显示3D场景OpenGL程序都使用深度缓存。它的排序决定那个物体先画。
   //这样您就不会将一个圆形后面的正方形画到圆形上来。深度缓存是OpenGL十分重要的部分。

   glClearDepth(1.0);                   // 设置深度缓存
   glEnable(GL_DEPTH_TEST);             // 启用深度测试
   glDepthFunc(GL_LESS);                // 所作深度测试的类型

   //接着告诉OpenGL我们希望进行最好的透视修正。
   //这会十分轻微的影响性能。但使得透视图看起来好一点。

   glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // 真正精细的透视修正

End;

//==============================================================================
//所有的绘图代码。任何您所想在屏幕上显示的东东都将在此段代码中出现。
//以后的每个程序会在此处增加新的代码。
//==============================================================================

Procedure glDraw();
Begin
   glClear(GL_COLOR_BUFFER_BIT Or GL_DEPTH_BUFFER_BIT); // 清除屏幕和深度缓存
   glLoadIdentity();                    // 重置当前的模型观察矩阵
End;

Function WndProc(hWnd: HWND;            // 窗口的句柄
   Msg: UINT;                           // 窗口的消息
   wParam: WPARAM;                      // 附加的消息内容
   lParam: LPARAM                       // 附加的消息内容
   ): LRE

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

相关专题:
 
 网友评论:(评论内容只代表网友观点,与本站立场无关!)
GOOGLE广告

阅读排行

| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
中国教师站

中国教师站 版权所有 Copyright © 2006-2020 All Rights Reserved 站长:Sina & Siny
[备用域名:www.JXZYW.Com] 有事请留言有事请留言
【实力成就精品 诚信呵护品牌】

信息产业部备案
苏ICP备06018635号