OpenGL纹理操作--glGenTextures

Posted 小哈龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenGL纹理操作--glGenTextures相关的知识,希望对你有一定的参考价值。

一.glGenTexture函数简介

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 n, GLuint *texture);

该函数用来产生纹理名称。这里纹理名称GLuint *texture是整型的,因此也可以理解为这个函数为这n个纹理指定了n个不同的ID。

二.OpenGL渲染时时使用纹理的一般步骤

在用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;
}

 本文转载自:http://blog.sina.com.cn/s/blog_9f4bc8e301014gza.html

以上是关于OpenGL纹理操作--glGenTextures的主要内容,如果未能解决你的问题,请参考以下文章

openGL之API学习(一九三)glGenTextures

openGL之API学习(一九四)glGenTextures glActiveTexture

OpenGL学习——纹理

OpenGL设置纹理图片

OpenGL设置纹理图片

opengl 纹理映射