glGenTextures(GLsizei n, GLuint *textures)函數說明



glGenTextures(GLsizei n, GLuint *textures)函數說明
           n:用來生成紋理名字的數量
textures:存儲紋理名稱數組的第一個元素指針
數組

備註說明:
glGenTextures函數根據紋理參數返回n個紋理名稱。紋理名稱集合沒必要是一個連續的整數集合。所以,可能在先前調用的glGenTextures的時候沒有名稱集合被返回。產生紋理函數假定目標紋理的面積是由glBindTexture函數限制的。先前調用glGenTextures產生的紋理名稱集不會由後面調用的glGenTextures獲得,除非他們首先被glDeleteTextures刪除。
你不能夠在顯示列表中包含glGenTextures。
函數

使用時注意:ui

void glGenTextures(GLsizein, GLuint *texture);spa

該函數用來產生紋理名稱。這裏紋理名稱GLuint *texture是整型的,所以也能夠理解爲這個函數爲這n個紋理指定了n個不一樣的ID。指針

在用GL渲染的時候,紋理是很常見的東西。使用紋理以前,必須執行這句命令爲你的texture分配一個ID,而後綁定這個紋理,加載紋理圖像,這以後,這個紋理才能夠使用。加載紋理的代碼以下:渲染

BOOL LoadTextures(IplImage *pImage, GLuint *pTexture)
{
    int Status=FALSE;
    if(pImage != NULL)
    {
        Status=TRUE;
循環

        glGenTextures(1, &pTexture[0]); //注意這裏
        glBindTexture(GL_TEXTURE_2D, pTexture[0]);
        glTexImage2D(GL_TEXTURE_2D, 0, 3,
                     pImage->width, pImage->height,
                     0, GL_BGR, GL_UNSIGNED_BYTE, (unsigned char *)pImage->imageData);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    }
    return Status;
}
程序

    使用上面這個函數時須要當心,這個函數只能放在循環外面使用!若是你想在循環中重複利用這個texture[0],給它加載不一樣的紋理(好比,你想在窗口中顯示序列圖像),而把這個函數放在循環內部調用的話,那麼當程序循環足夠屢次以後,你的電腦將變得巨慢無比,甚至致使死機。緣由就是反覆地調用glGenTextures(1, &pTexture[0])。im

相關文章
相關標籤/搜索