glGenTextures(GLsizei n, GLuint *textures)函数说明
来源:互联网 发布:淘宝下拉菜单 编辑:程序博客网 时间:2024/06/06 22:35
glGenTextures(GLsizei n, GLuint *textures)函数说明
n:用来生成纹理名字的数量
textures:存储纹理名称数组的第一个元素指针
备注说明:
glGenTextures函数根据纹理参数返回n个纹理名称。纹理名称集合不必是一个连续的整数集合。因此,可能在先前调用的glGenTextures的时候没有名称集合被返回。产生纹理函数假定目标纹理的面积是由glBindTexture函数限制的。先前调用glGenTextures产生的纹理名称集不会由后面调用的glGenTextures得到,除非他们首先被glDeleteTextures删除。
你不可以在显示列表中包含glGenTextures。
使用时注意:
void glGenTextures(GLsizein, GLuint *texture);
该函数用来产生纹理名称。这里纹理名称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])。
glGenTextures(GLsizei n, GLuint *textures)函数说明
n:用来生成纹理的数量
textures:存储纹理索引的
glGenTextures函数根据纹理参数返回n个纹理索引。纹理名称集合不必是一个连续的整数集合。
(glGenTextures就是用来产生你要操作的纹理对象的索引的,比如你告诉OpenGL,我需要5个纹理对象,它会从没有用到的整数里返回5个给你)
glBindTexture实际上是改变了OpenGL的这个状态,它告诉OpenGL下面对纹理的任何操作都是对它所绑定的纹理对象的,比如glBindTexture(GL_TEXTURE_2D,1)告诉OpenGL下面代码中对2D纹理的任何设置都是针对索引为1的纹理的。
产生纹理函数假定目标纹理的面积是由glBindTexture函数限制的。先前调用glGenTextures产生的纹理索引集不会由后面调用的glGenTextures得到,除非他们首先被glDeleteTextures删除。你不可以在显示列表中包含glGenTextures。
void glGenTextures(GLsizei
该函数用来产生纹理名称。这里纹理名称GLuint *texture是整型的,因此也可以理解为这个函数为这n个纹理指定了n个不同的ID。
在用GL渲染的时候,纹理是很常见的东西。使用纹理之前,必须执行这句命令为你的texture分配一个ID,然后绑定这个纹理,加载纹理图像,这之后,这个纹理才可以使用。加载纹理的代码如下:
BOOL LoadTextures(IplImage *pImage, GLuint *pTexture)
{
}
BOOL LoadTextures(IplImage *pImage, GLuint texture)
{
}
在窗口初始化的时候先执行一遍:
glGenTextures(1, &texture[0]);
然后在你的循环内部调用:
IplImage *videoFrame = cvQueryFrame(capture);
LoadTextures(videoFrame, texture[0]);
这样就可以显示图像帧了,也不会再出现电脑运行速度变慢的问题了。总之,千万不要给一个texture重复分配ID。
转自http://blog.csdn.net/yangautumn43/article/details/5799851
http://blog.sina.com.cn/s/blog_67ede2d80100w3i8.html
- glGenTextures(GLsizei n, GLuint *textures)函数说明
- glGenTextures(GLsizei n, GLuint *textures)函数说明
- OpenGL函数中文说明二:glGenTextures(GLsizei n, GLuint *textures)函数说明
- OpenGL函数思考-glGenTextures
- glGenTextures
- matlab中Img(:,:,n)函数的说明
- UIImage to GLuint
- OpenGL FrameBuffer Object OpenGL中的FBO对象 OpenGL函数思考-glGenTextures
- OpenGL绘制纹理时,glGenTextures()函数带来的内存泄露,使程序被杀死。
- memset(void *s,int c,size_t n)函数详细说明
- ATF Textures
- UE4 Textures
- brick textures
- 纹理(Textures)
- OpenGLES - glGenTextures 生成命名纹理
- MySQL常用内置函数说明+concat+insert(str,m,n,inser_str)+week(now())+
- 函数说明
- 函数说明
- 网络分析与网络数据集—创建网络数据集(一)
- 关于泛型Generics
- nginx+tomcat+memcached负载均衡集群搭建详细笔记(下)
- 无法启动此程序,因为计算机中丢失msvcp90d.dll
- 百度天气预报接口
- glGenTextures(GLsizei n, GLuint *textures)函数说明
- Linux之安装JDK
- mini6410成功移植OPENCV-2.0.0实现人脸检测
- struts2常用标签
- 获取图片高度和宽度
- 网络分析与网络数据集—创建网络数据集(二)
- CODE中创建项目和更新项目的方法
- WHILE (Transact-SQL)
- 在LUA中获取各种路径.