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

相关文章
相关标签/搜索