OpenGL的glTexImage2D()與gluBuild2DMipmaps()的使用方法及區別
說明:兩者的都是生成紋理,即:將載入的位圖文件(*.bmp)轉換成紋理貼圖。
1、glTexImage2D()介紹
先看glTexImage2D()函數定義:
void glTexImage2D(GLenum target,
GLint level,
GLint internalFormat,
GLsizei width,
GLsizei height,
GLint border,
GLenum format,
GLenum type,
const GLvoid * data);
再看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]記錄中的數據
2、gluBuild2DMipmaps()介紹
先看gluBuild2DMipmaps()函數定義:
int gluBuild2DMipmaps (GLenum target,
GLint components,
GLint width,
GLint height,
GLenum format,
GLenum type,
const void *data);
再看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]記錄中的數據
3、glTexImage2D()和gluBuild2DMipmaps()區別
glTexImage2D()和gluBuild2DMipmaps()使用注意事項:
使用glTexImage2D()時所采用的位圖文件分辨率必須為:64×64、128×128、256×256三種格式,如果其他大小則會出現繪制不正常。
gluBuild2DMipmaps()支持任意分辨率位圖文件。