1. 创建纹理图像


  

   glGenTextures(1,@Texture);
    glBindTexture(GL_TEXTURE_2D,Texture);
   

  glGenTextures和glBindTexture函数用于创建和绑定纹理对象,glTexImage2D函数将Pixels数组中的像素值传给当前绑定的纹理对象,于是便创建了纹理。glTexImage函数的参数分别是纹理的类型,纹理的等级,每个像素的字节数,纹理图像的宽度和高度,边框大小,像素数据的格式,像素值的数据类型,像素数据。

2. OpenGL中的贴图方式

   OpenGL为我们提供了三种纹理——GL_TEXTURE_1D、GL_TEXTURE_2D和GL_TEXTURE_3D。它们分别表示1维纹理、2维纹理和3维纹理。无论是哪一中纹理,使用方法都是相同的:即先创建一个纹理对象和一个存储纹理数据的n维数组,在调用glTexImageN D函数来传入相应的纹理数据。除此之外,我们可以一些函数来设置纹理的其他特性。

2.1 设置贴图模式

  

   glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,TextureMode);

  GL_MODULATE,GL_DECAL和GL_BLEND中的任何一种。

  

   glTexEnvfv(GL_TEXUTRE_ENV,GL_TEXTURE_ENV_COLOR,@ColorRGBA);

  

2.2 纹理滤镜

  

  

   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILETER, MagFilter);//设置放大滤镜
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, MinFilter); //设置缩小滤镜

 


表6.3-1 可使用的纹理滤镜

滤镜

描述

GL_NEAREST

取最邻近像素

GL_LINEAR

线性内部插值

GL_NEAREST_MIPMAP_NEAREST

最近多贴图等级的最邻近像素

GL_NEAREST_MIPMAP_LINEAR

在最近多贴图等级的内部线性插值

GL_LINEAR_MIPMAP_NEAREST

在最近多贴图等级的外部线性插值

GL_LINEAR_MIPMAP_LINEAR

在最近多贴图等级的外部和内部线性插值

3 纹理映射

3.1 纹理坐标

  

  

  


Android opengl 纹理上添加纹理 opengl纹理大小_图形


  

  

    glBindTexture(Tex);
      glBegin(GL_TRIANGLES);
        glTexCoord2d(0,0);
        glVertex3f(-10,-10,0);
        glTexCoord2d(0,1);
       

       glTexCoord2d(1,1);
       

    



3.2 纹理缠绕

  

  


Android opengl 纹理上添加纹理 opengl纹理大小_filter_02


  


 

Android opengl 纹理上添加纹理 opengl纹理大小_图形_03



  

   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,WrapMode);//在s方向上的缠绕方式
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,WrapMode);//在t方向上的缠绕方式

  

4.纹理对象

创建和使用文理对象

  

  

  

   var Texture:GLUint;
    ...
   

  

  

  

  

删除纹理对象

  

  

  

  

  

5. 多贴图纹理

  


                                        

Android opengl 纹理上添加纹理 opengl纹理大小_filter_04

  
    glTexImage2D(GL_TEXTURE_2D,0,3,8,8,0,GL_RGB,GL_UNSIGNED_BYTE,Pixels);
    glTexImage2D(GL_TEXTURE_2D,1,3,4,4,0,GL_RGB,GL_UNSIGNED_BYTE,Pixels);
    glTexImage2D(GL_TEXTURE_2D,2,3,2,2,0,GL_RGB,GL_UNSIGNED_BYTE,Pixels);
   

  

  

  

  

   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);