OpenGL纹理操作--glGenTextures

亦凉 2023-01-23 05:57 83阅读 0赞

一.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,然后绑定这个纹理,加载纹理图像,这之后,这个纹理才可以使用。加载纹理的代码如下:

  1. BOOL LoadTextures(IplImage *pImage, GLuint *pTexture)
  2. {
  3. int Status=FALSE;
  4. if(pImage != NULL)
  5. {
  6. Status=TRUE;
  7. glGenTextures(1, &pTexture[0]); //注意这里
  8. glBindTexture(GL_TEXTURE_2D, pTexture[0]);
  9. glTexImage2D(GL_TEXTURE_2D, 0, 3,
  10. pImage->width, pImage->height,
  11. 0, GL_BGR, GL_UNSIGNED_BYTE, (unsigned char *)pImage->imageData);
  12. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  13. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  14. }
  15. return Status;
  16. }

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

发表评论

表情:
评论列表 (有 0 条评论,83人围观)

还没有评论,来说两句吧...

相关阅读

    相关 OpenGL纹理置换编程

    在OpenGL中,纹理贴图是一种常用的技术,用于将图像或图案应用到3D模型表面上。然而,有时仅仅使用静态纹理贴图可能会显得单调,无法达到想要的效果。在这种情况下,使用纹理置换技

    相关 openGL纹理

    纹理压缩技术已经广泛应用在各种3D游戏之中,它们包括:DXTC(Direct X Texture Compress,DirectX纹理压缩,以S3TC为基础)、S3TC(S3

    相关 OpenGL纹理贴图

    1.纹理贴图的步骤 1)创建纹理对象,并为它指定一个纹理。 glGenTextures() glGenerateMipmap() 2)确定纹理如何应用到每个像素上 g