glGenTextures(GLsizei n, GLuint *textures)函数说明

转载 2014年12月29日 16:12:10


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])。

OGL绘制相关函数总结2

本文主要整理自http://www.aiuxian.com/article/p-1704414.html,感谢作者wangdingqiaoit 传统的图形绘制方法 传统立即模式Immediate M...
  • Blues1021
  • Blues1021
  • 2016年07月04日 11:46
  • 2730

OpenGL学习十七:纹理贴图

纹理贴图的步骤 1.创建纹理对象,并为它指定一个纹理,纹理包含1维,2维,3维。描述纹理的数据由1~4个元素组成,用于表示RGBA四元组。调整常量或者深度成分 glGenTextures(1, &...
  • tiankefeng19850520
  • tiankefeng19850520
  • 2014年01月21日 15:40
  • 959

OpenGL(十二) 纹理映射(贴图)

OpenGL绘制纹理的步骤: 1. 开启纹理功能 使用glEnable(GL_TEXTURE_2D)开启2D纹理功能,使用glDisable(GL_TEXTURE_2D)关闭纹理,默认情况下纹理是关闭...
  • dcrmg
  • dcrmg
  • 2016年11月16日 07:15
  • 4218

opengl 光照,材质,BMP纹理贴图的代码模板

BMP纹理贴图: 首先把纹理图片,用画图另存为转成BMP格式(24bit-bmp) 纹理加载函数: //两个纹理对象的编号 GLuint tex1; GLuint tex2; int power_of...
  • u010309553
  • u010309553
  • 2016年10月20日 13:34
  • 1378

【OpenGL】详解第一个OpenGL程序

OpenGL能做的事情太多了!很多程序也看起来很复杂。但是!所有O
  • candycat1992
  • candycat1992
  • 2014年11月26日 16:00
  • 59078

cocos2dx 多重纹理贴图

myshader.vert attribute vec4 a_position; attribute vec4 a_color; attribute vec2 TextureCoord; vary...
  • themagickeyjianan
  • themagickeyjianan
  • 2015年06月23日 16:08
  • 1346

OPENGL-ES之顶点索引绘图

在学习OpenGLES时遇到一个概念,索引缓存。网上查资料大部分代码均是针对安卓或者桌面平台的,而且大部分的代码拷贝下来不能达到效果。经过几天的努力,终于了解了索引绘图的概念,所谓索引绘图是一种在绘制...
  • enghou123
  • enghou123
  • 2016年09月18日 14:03
  • 813

OpenGL的数据类型 与 C中数据类型对应

OpenGL的数据类型(转)   2009-04-14 12:23:30|  分类: 图形 |字号 订阅 为了便于OpenGL在各种平台上移植,OpenGL定义了自己的数...
  • nklinux
  • nklinux
  • 2013年11月24日 13:56
  • 1225

山东大学 图形学 openGL实验一

根据OpenGL提供的直线,多边形绘制算法(橡皮筋效果),实现基于鼠标交互的卡通人物设计与绘制。使用颜色填充与反走样技术对卡通人物外貌以及衣着进行绘制。实现对卡通人物轮廓的交互控制,点击鼠标左键可以对...
  • stSahana
  • stSahana
  • 2016年05月14日 19:14
  • 857

OpenGL系列教程之六:OpenGL顶点数组

相关主题:顶点缓冲区,显示列表 下载:vertexArray.zip,vertexArray2.zip 概述 初始化 glDrawArrays() glDrawElements() glDrawR...
  • u012501459
  • u012501459
  • 2013年10月22日 11:18
  • 2854
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:glGenTextures(GLsizei n, GLuint *textures)函数说明
举报原因:
原因补充:

(最多只允许输入30个字)