Nehe的贴图步骤(转)

SETP1 :读入位图文件
// 读入位图文件
AUX_RGBImageRec *LoadBMP(char *Filename) 
{
 
 FILE *File=NULL;                                
    if (!Filename)                            
 
    {
       
return NULL;                               
    }
   
File=fopen(Filename,"r");                   
    if (File) 
    {
        fclose(File);
        return auxDIBImageLoad(Filename); // Load The Bitmap And Return A Pointer
    }
    return NULL;                                
}
AUX_RGBImageRec *TextureImage[1];//这个结构 将持有图像的宽度, 高度和数据
TextureImage[0]=LoadBMP("Data/NeHe.bmp")// 载入位图
 
SETP 2: 产生所需数量的纹理名
glGenTextures(1,              // 需要产生纹理名的数目
              &texture[0] ); // 保存纹理名的数组
 
SETP 3: 创建纹理
创建纹理这个步骤分为几个小步,对于每一个纹理来说它们必须作为原子操作一起调用,然后才能设置第二个纹理
1.创建纹理对象
   glBindTexture(GL_TEXTURE_2D, texture[0]); // 给texture data 分配name。
2. 指定一个二维纹理
glTexImage2D(GL_TEXTURE_2D,
    0,//LOD 级数
    3,// 指定纹素中存储哪些分量(R,G,B,A,深度,辉度或强度)
      //这里只指定有关RGBA数据成分,1:选择R; 2:选择R A;3:选择R G B;4:选择R G B A;
         
    TextureImage[0]->sizeX,
    TextureImage[0]->sizeY,
    0,// 纹理边界
    GL_RGB,// 图像数据格式
    GL_UNSIGNED_BYTE,// 像素数据类型
    TextureImage[0]->data);
3.设置过滤方式
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);// Linear Filtering
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);// Linear Filtering
 
SETP 4 :使用纹理
glEnable(GL_TEXTURE_2D);         // Enable Texture Mapping
当绑定后纹理对象可以用一个的无符号整数表示。
glBindTexture(GL_TEXTURE_2D, texture[0]);       // Select Our Texture
glBegin() 和 glEnd()之间为每个顶点设置纹理坐标,glTexCoord2f 的第一个参数是x坐标0.0f 就是 纹理的左边,1.0f 就是纹理的右边。glTexCoord2f 的第二个参数是y坐标0.0f 就是纹理的底边,而1.0f 就是纹理的顶边。
如果想变换纹理, 就需要绑定另一个纹理。 有一点很重要, 那就是绑定纹理操作不能在 glBegin() glEnd() 之间进行。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值