NeHe的opengl教程delphi版(6)----纹理映射(贴图)

{

贴图可以极大的节省CPU时间。呵呵,但是这一节费了我比较多的时间 : (

因为用到了opengl的辅助库,现在这个库的函数已经很少有人用了,但是我还是找到了,感谢zdcnow(磁效应),他给我提供的这个辅助库的delphi版本。在学习本节之前,请大家到网上下载glaux.dll、Glaux.pas文件,并加到项目中。

好了,让我们继续OPENGL之路.

首先我们需要加进SysUtils单元,因为我们这节要用到文件操作,我们还要将Glaux单元加进来。

然后我们在第一课的基础上加上几个变量,xrot , yrot 和 zrot 。这些变量用来使立方体绕X、Y、Z轴旋转。texture[] 为一个纹理分配存储空间。如果您需要不止一个的纹理,应该将数字1改成您所需要的数字。

}

VAR

   h_RC             : HGLRC;            // Rendering Context(着色描述表)。
   h_DC             : HDC;              // Device Context(设备描述表)
   h_Wnd            : HWND;             // 窗口句柄
   h_Instance       : HINST;            // 程序Instance(实例)。
   keys             : Array[0..255] Of Boolean; // 用于键盘例程的数组

   xrot,                                // X 旋转量 ( 新增 )
   yrot,                                // Y 旋转量 ( 新增 )
   zrot             : GLfloat;          // Z 旋转量 ( 新增 )

  Texture          : Array[0..1] Of GLuint; // 存储一个纹理 ( 新增 )

{然后引载入opengl32.dll中的两个过程,我们要用到他们}


Procedure glGenTextures(n: GLsizei; Var textures: GLuint); stdcall; external
   opengl32;
Procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external
   opengl32;

{接下来我们需要增加一个新的函数,用来再入图像,该函数的返回类型在Glaux.pas中定义如下:

TAUX_RGBImageRec= record
       sizeX, sizeY: GLint;
        data: pointer;
          end;
 PTAUX_RGBImageRec= ^TAUX_RGBImageRec;

具体含义会在后面介绍}

Function LoadBmp(filename: pchar): PTAUX_RGBImageRec;
Var
   BitmapFile       : Thandle;          // 文件句柄
Begin
   //接下来检查文件名是否已提供
   If Filename = '' Then                // 确保文件名已提供。
      result := Nil;                    // 如果没提供,返回 NULL
   //接着检查文件是否存在。
   BitmapFile := FileOpen(Filename, fmOpenWrite); //尝试打开文件
   //如果我们能打开文件的话,很显然文件是存在的。

   If BitmapFile > 0 Then               // 文件存在么?
      Begin
         //关闭文件。
         FileClose(BitmapFile);         // 关闭句柄
         //au

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值