zoukankan      html  css  js  c++  java
  • 【转】glTexImage2D()和gluBuild2DMipmaps() [将载入的位图文件(*.bmp)转换成纹理贴图]+glTexParameteri()纹理过滤函数

    glTexImage2D()和gluBuild2DMipmaps()

    说明:两者的都是生成纹理,即:将载入的位图文件(*.bmp)转换成纹理贴图。

    glTexImage2D()的用法举例

    glTexImage2D(GL_TEXTURE_2D, //此纹理是一个2D纹理

    0,                                    //代表图像的详细程度, 默认为0即可

    3,                                   //颜色成分R(红色分量)、G(绿色分量)、B(蓝色分量)三部分,若为4则是R(红色分量)、G(绿色分量)、B(蓝色分量)、Alpha

    TextureImage[0]->sizeX,          //纹理的宽度

    TextureImage[0]->sizeY,          //纹理的高度

    0,                                         //边框的值

    GL_RGB,                                 //告诉OpenGL图像数据由红、绿、蓝三色数据组成

    GL_UNSIGNED_BYTE,                //组成图像的数据是无符号字节类型

    TextureImage[0]->data);          //告诉OpenGL纹理数据的来源,此例中指向存放在TextureImage[0]记录中的数据

    gluBuild2DMipmaps()的用法举例

    gluBuild2DMipmaps(GL_TEXTURE_2D,//此纹理是一个2D纹理

    3,                                        //颜色成分R(红色分量)、G(绿色分量)、B(蓝色分量)三部分,若为4则是R(红色分量)、G(绿色分量)、B(蓝色分量)、Alpha

    TextureImage[0]->sizeX,               //纹理的宽度

    TextureImage[0]->sizeY,               //纹理的高度

    GL_RGB,                                     //告诉OpenGL图像数据由红、绿、蓝三色数据组成

    GL_UNSIGNED_BYTE,                    //组成图像的数据是无符号字节类型

    TextureImage[0]->data);              //告诉OpenGL纹理数据的来源,此例中指向存放在TextureImage[0]记录中的数据

    使用注意事项

    使用glTexImage2D()时所采用的位图文件分辨率必须为:64×64、128×128、256×256三种格式,如果其他大小则会出现绘制不正常。

    gluBuild2DMipmaps()支持任意分辨率位图文件。

    glTexParameteri()纹理过滤函数.

    图象从纹理图象空间映射到帧缓冲图象空间(映射需要重新构造纹理图像,这样就会造成应用到多边形上的图像失真),

    这时就可用glTexParmeteri()函数来确定如何把纹理象素映射成像素.

    你这里的参数功能说明如下:

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);

    GL_TEXTURE_2D: 操作2D纹理.

    GL_TEXTURE_WRAP_S: S方向上的贴图模式.

    GL_CLAMP: 将纹理坐标限制在0.0,1.0的范围之内.如果超出了会如何呢.不会错误,只是会边缘拉伸填充.

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);

    这里同上,只是它是T方向

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

    这是纹理过滤

    GL_TEXTURE_MAG_FILTER: 放大过滤

    GL_LINEAR: 线性过滤, 使用距离当前渲染像素中心最近的4个纹素加权平均值.

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);

    GL_TEXTURE_MIN_FILTER: 缩小过滤

    GL_LINEAR_MIPMAP_NEAREST: 使用GL_NEAREST对最接近当前多边形的解析度的两个层级贴图进行采样,然后用这两个值进行线性插值.

  • 相关阅读:
    jquery怎么实现跨域的访问呢?与别人提供的接口连接
    服务器返回数组,data[0]得到的总是不对?如何处理?
    ajax 如何实现页面跳转
    问答精华-IntelliJ IDEA快捷键大全
    setinterval在jQuery里面是怎么使用的。
    background 、backgroundcolor、background-color 我怎么有点分不清了??
    视频最后用使用了function(i,ot)一笔带过,但我看不懂i和ot这2个参数的具体值是怎么获取得到的,能不能说一下参数传递过程?
    3张大图片自动播放
    图片自动加载
    用jQuery之后,之前javascript的一些方法就不能用了吗
  • 原文地址:https://www.cnblogs.com/lzhitian/p/2806497.html
Copyright © 2011-2022 走看看