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坐标,等下运行下模拟器,看看是什么样的。