zoukankan      html  css  js  c++  java
  • OpenGL纹理高级

    矩形纹理

    对于二维纹理来说,除了GL_TEXTURE_2D之外,使用GL_TEXTURE_RECTANGLE就可以使用矩形纹理。

    矩形纹理几大特点:

    不能Mip,只能加载glTexImage2D的level 0
    纹理坐标非标准化
    不支持压缩纹理

    这种方式通常用于处理和提交图像数据的应用,比起通常的2D纹理硬件支持也更加简单,效率更高。

    GLSL采样器sampler2D --> samplerRect

    多重纹理

    多重纹理支持查询:

    GLint n;
    glGetItegerv(GL_MAX_TEXTURE_UNITS,&n);

    使用多重纹理

    纹理数组

    使用GL_TEXTURE_2D_ARRAY作为相关函数的第一个参数。使用GLTexImage3D加载一组图像。
    可以将最后一个参数设置为NULL,GL将会使其保持未初始化状态,然后在后面使用glTexSubImage3D循环加载所有的图像。

    在GLSL中使用uniform sampler2DArray进行采样

    纹理代理

    使用纹理代理可以查询支持的纹理信息。

    创建一个纹理代理就像创建一个纹理一样,但是第一个参数应该是下列之一:

    GL_PROXY_TEXTURE_1D
    GL_PROXY_TEXTURE_2D 
    GL_PROXY_TEXTURE_3D
    GL_PROXY_TEXTURE_CUBE_MAP

    最后一个参数应该为NULL。

    值得注意的是,这并不是真的创建了一个纹理。

    在创建之后我们就可以向下面这样来查询相应的信息了(这个意思就是,我们先把指定的值赋给他,然后来查询这个值到底是多少):

    glTexImage2D(GL_PROXY_TEXTURE_2D,0,GL_RGBA,2048,4096,0,GL_BGRA,GL_UNSIGNED,NULL);
    //查看是否支持4096的高度
    void glGetTexLevelParameter(GL_TEXTURE_2D,0,GL_TEXTURE_HEIGHT,&height);
  • 相关阅读:
    linux 终端光标消失问题
    linux系统中条件测试语句
    linux shell if语句
    linux shell for循环
    linux 系统中read命令
    linux中while循环语句
    linux shell脚本中流程控制语句 if 、for、while、case
    pc端WINCE的安装包
    WinCE程序的几种开发方法
    Wince 下开发技巧(一)查看内存
  • 原文地址:https://www.cnblogs.com/wubugui/p/4299816.html
Copyright © 2011-2022 走看看