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