OpenGL的glTexImage2D()與gluBuild2DMipmaps()的使用方法及區別


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()支持任意分辨率位圖文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM