博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】glTexImage2D()和gluBuild2DMipmaps() [将载入的位图文件(*.bmp)转换成纹理贴图]+glTexParameteri()纹理过滤函数...
阅读量:6426 次
发布时间:2019-06-23

本文共 1685 字,大约阅读时间需要 5 分钟。

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对最接近当前多边形的解析度的两个层级贴图进行采样,然后用这两个值进行线性插值.

转载于:https://www.cnblogs.com/lzhitian/archive/2012/12/07/2806497.html

你可能感兴趣的文章
FastDFS蛋疼的集群和负载均衡(十七)之解决LVS+Keepalived遇到的问题
查看>>
深入剖析Redis系列(二) - Redis哨兵模式与高可用集群
查看>>
Android 用于校验集合参数的小封装
查看>>
iOS混合开发库(GICXMLLayout)七、JavaScript篇
查看>>
instrument 调试 无法指出问题代码 解决
查看>>
理解缓存
查看>>
BAT 经典算法笔试题 —— 磁盘多路归并排序
查看>>
Nginx限制带宽
查看>>
All Web Application Attack Techniques
查看>>
归档日志ORA-19809: 超出了恢复文件数的限制
查看>>
精品德国软件 UltraShredder 文件粉碎机
查看>>
PANDAS 数据合并与重塑(join/merge篇)
查看>>
文件时间信息在测试中的应用
查看>>
直播疑难杂症排查(8)— 播放杂音、噪音、回声问题
查看>>
如何写gdb命令脚本
查看>>
Android ListView展示不同的布局
查看>>
iOS宏(自己使用,持续更新)
查看>>
手把手玩转win8开发系列课程(3)
查看>>
NGINX引入线程池 性能提升9倍
查看>>
《淘宝技术这十年》读书笔记 (四). 分布式时代和中间件
查看>>