gluBuild2DMip地图s()与glTexImage2D()的使用方法及区别

gluBuild2DMipmaps()与glTexImage2D()的使用方法及区别
说明:两者的都是生成纹理,即:将载入的位图文件(*.bmp)转换成纹理贴图。

glTexImage2D()的用法举例
glTexImage2D(GL_TEXTURE_2D, //此纹理是一个2D纹理
0,                                         //代表图像的详细程度, 默认为0即可
3,                                         //颜色成分R(红色分量)、G(绿色分量)、B(蓝色分量)三部分,若为4则是R(红

                                         //色分量)、G(绿色分量)、B(蓝色分量)、Alpha
TextureImage[0]->sizeX,          //纹理的宽度
TextureImage[0]->sizeY,          //纹理的高度
0,                                         //边框的值
GL_RGB,                               //告诉OpenGL图像数据由红、绿、蓝三色数据组成
GL_UNSIGNED_BYTE,                //组成图像的数据是无符号字节类型
TextureImage[0]->data);          //告诉OpenGL纹理数据的来源,此例中指向存放在TextureImage[0]记录中的数据


gluBuild2DMipmaps()的用法举例

gluBuild2DMipmaps(GL_TEXTURE_2D,//此纹理是一个2D纹理
3,                                             //颜色成分R(红色分量)、G(绿色分量)、B(蓝色分量)三部分,若为4则是R(红色分量)、G(绿色分量)、B(蓝色分量)、Alpha
TextureImage[0]->sizeX,               //纹理的宽度
TextureImage[0]->sizeY,               //纹理的高度
GL_RGB,                                      //告诉OpenGL图像数据由红、绿、蓝三色数据组成
GL_UNSIGNED_BYTE,                     //组成图像的数据是无符号字节类型
TextureImage[0]->data);             //告诉OpenGL纹理数据的来源,此例中指向存放在TextureImage[0]记录中的数

1 楼 w11h22j33 2011-01-05  
是很常用的函数
他们的作用是绑定函数
但是有时候使用
glTexImage2D
并不能正确绑定纹理
其原因据我所知有2个
1个是图形大小不是2的整数次幂
还有一个就是
如果使用glTexImage2D,则在纹理包裹模式中不适用MIPMAP系列

ogl 2.0之后glTexImage2D好像没有这么限制,不过MIPMAP照样要2^n
2 楼 w11h22j33 2011-01-06  
纹理的边缘像素一直延伸到左上角。这就是GL_CLAMP_TO_EDGE.

让我快速解释这两行代码:

   glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
   glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

我们调用了 glTexParameterf() 当我们加载纹理的时候设置纹理过滤。像一般的OpenGL函数,它具有“双重功能”。有三个参数,但是在OpenGL ES只有两个有效果。第一个参数一般使 GL_TEXTURE_2D ,OpenGL ES 只支持它。

第二个参数是告诉OpenGL什么“变量”是我们要改变的,一般来说,是 GL_TEXTURE_WRAP_x.

这第三个参数就是我们要设置的。

OpenGL通过设置 “变量” or “设置” GL_TEXTURE_WRAP_S t到GL_CLAMP_TO_EDGE, 我们告诉 OpenGL 不要重复纹理而是延伸s 坐标 (什么是 “s”, 后面会说). 我们也做了相同的t坐标,等下运行下模拟器,看看是什么样的。