转自:http://blog.csdn.net/stilling2006/article/details/5549310
gluBuild2DMipmaps与glTexImage2D两者的都是从图片生成纹理,即将图片加载到内存中。
glTexImage2D()的用法举例
glTexImage2D(GL_TEXTURE_2D, //此纹理是一个2D纹理
0, //代表图像的详细程度, 默认为0即可
3, //颜色成分
TextureImage[0]->sizeX, //纹理的宽度
TextureImage[0]->sizeY, //纹理的高度
0, //边框的值
GL_RGB, //告诉OpenGL图像数据由红、绿、蓝三色数据组成
GL_UNSIGNED_BYTE, //组成图像的数据是无符号字节类型
TextureImage[0]->data); //告诉OpenGL纹理数据的来源,此例中指向存放在TextureImage[0]记录中的数据
这个函数的第二个参数,如果我们设为0时,指的是原图,当我们想用相应的LOD的mipmap时,即经过图像融合的图片时,我们需要自己手动处理融合图像,而gluBuild2DMipmaps()可以自动生成不同细节层次的图片,即不同精细程度的图片。
gluBuild2DMipmaps()的用法举例
gluBuild2DMipmaps(GL_TEXTURE_2D,//此纹理是一个2D纹理
3, //颜色成分
TextureImage[0]->sizeX, //纹理的宽度
TextureImage[0]->sizeY, //纹理的高度
GL_RGB, //告诉OpenGL图像数据由红、绿、蓝三色数据组成
GL_UNSIGNED_BYTE, //组成图像的数据是无符号字节类型
TextureImage[0]->data); //告诉OpenGL纹理数据的来源,此例中指向存放在TextureImage[0]记录中的数据
使用注意事项
使用glTexImage2D()时所采用的位图文件分辨率必须为:64×64、128×128、256×256三种格式,如果其他大小则会出现绘制不正常。gluBuild2DMipmaps()支持任意分辨率位图文件。
转自:http://blog.sina.com.cn/s/blog_9f4bc8e301014gza.html
glGenTexture()函数作用与上面二者不同,它是用来用来产生你要操作的纹理对象的索引的
glGenTextures(GLsizei n, GLuint *textures)函数说明
n:用来生成纹理的数量
textures:存储纹理索引的
比如你告诉OpenGL,我需要5个纹理对象(GLsizei n),它会从没有用到的整数里返回5个给你,存储在(GLuint *textures)中。