纹理贴图的步骤

  1. 创建纹理对象,并为它指定一个纹理
  2. 确定纹理如何应用到每个像素上
  3. 启用纹理贴图功能
  4. 绘制场景,提供纹理坐标和几何图形坐

Tips:纹理坐标必须在RGBA模式下才能使用,在颜色索引模式下是未定义的行为

一、创建纹理对象,并为它指定一个纹理

static GLuint texName;

glGenTextures(1, &texName); //创建1个纹理对象,&texName指向纹理索引

glBindTexture(GL_TEXTURE_2D, texName);//绑定纹理:改变OpenGL状态,使得后续的纹理操作都对texName指向的2D纹理生效

二、确定纹理如何应用到每个像素上

1.OpenGL——纹理过滤函数glTexParameteri()
图象从纹理图象空间映射到帧缓冲图象空间(映射需要重新构造纹理图像,这样就会造成应用到多边形上的图像失真),这时就可用glTexParmeteri()函数来确定如何把纹理象素映射成像素.
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

GL_TEXTURE_2D: 操作2D纹理.
GL_TEXTURE_WRAP_S: S方向上的贴图模式.
GL_CLAMP: 将纹理坐标限制在0.0,1.0的范围之内.如果超出了会如何呢.不会错误,只是会边缘拉伸填充.        
GL_TEXTURE_MAG_FILTER: 放大过滤
GL_LINEAR: 线性过滤, 使用距离当前渲染像素中心最近的4个纹素加权平均值.
GL_TEXTURE_MIN_FILTER: 缩小过滤

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

2.为纹理对象指定一个纹理

glTexImage2D(
GL_TEXTURE_2D,        //target,目标纹理
0,               //分辨率级数参数,默认为0
GL_RGBA,               //纹理单元格式
checkImageWidth,      //纹理图像的宽
checkImageHeight,     //纹理图像的高
0,               //纹理图像边框的宽度,0或1
GL_RGBA,                     //纹理像素数据的格式
GL_UNSIGNED_BYTE, //像素数据类型
checkImage               //内存中指向纹理图像的指针

);

三、启用纹理贴图功能

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//清理缓存
glEnable(GL_TEXTURE_2D);//启用纹理贴图
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);//指定纹理贴图与材质的混合模式
glBindTexture(GL_TEXTURE_2D, texName);//绑定纹理
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);

四、绘制场景,提供纹理坐标和几何图形坐标

glBegin(GL_QUADS);
   glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0);
   glTexCoord2f(0.0, 1.0); glVertex3f(-2.0, 1.0, 0.0);
   glTexCoord2f(1.0, 1.0); glVertex3f(0.0, 1.0, 0.0);
   glTexCoord2f(1.0, 0.0); glVertex3f(0.0, -1.0, 0.0);

glTexCoord2f(0.0, 0.0); glVertex3f(1.0, -1.0, 0.0);
   glTexCoord2f(0.0, 1.0); glVertex3f(1.0, 1.0, 0.0);
   glTexCoord2f(1.0, 1.0); glVertex3f(2.41421, 1.0, -1.41421);
   glTexCoord2f(1.0, 0.0); glVertex3f(2.41421, -1.0, -1.41421);
glEnd();

glFlush();
glDisable(GL_TEXTURE_2D);

Opengl实现纹理贴图相关推荐

  1. OpenGL立方体纹理贴图

    OpenGL正方体纹理贴图 0. 写在最前面 1. 正方体顶点属性构建 2. 绑定多个VAO.VBO 3. 创建多个纹理 4. 渲染循环 5. 实现代码 6. 多个立方体纹理贴图 0. 写在最前面 要 ...

  2. openCV读入图片,openGL实现纹理贴图

    本文结合结合openCV,openGL的优点,实现混合编程. (1)OpenCV提供图形处理和计算机视觉方面的通用算法,读入二维图片很方便: (2)OpenGL是跨平台的图形程序接口,它用于二维,三维 ...

  3. 纹理窗口Qt+OpenGL之纹理贴图

    上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下纹理窗口 NeNe的代码中是加载到了一个正方体当中,代码很长.其实单纯的想要纹理贴图是很便利的.具体的纹理贴图技巧在 ...

  4. 手把手教会OpenGL之纹理贴图、包含纹理载入、纹理过滤、边界处理、纹理参数设置(入门级别案例,棋盘)

    一.OpenGL中纹理的加载(对glTexImage2D函数的使用) 二.纹理过滤(glTexParameteri参数中的GL_TEXTURE_MAG_FILTER与 GL_TEXTURE_MIN_F ...

  5. OpenGL:纹理贴图

    纹理贴图是在栅格化的模型表面上覆盖图像的技术.它是为渲染场景添加真实感的最基本和最重要的方法之一.硬件也为纹理贴图提供了硬件支持,使得它具备实现实时的照片级真实感的超高性能.纹理单元是专为纹理设计的硬 ...

  6. OpenGL曲面纹理贴图技术--波浪的模拟(转 作者 Y_Y)

    学过OpenGL的人都很容易的把图片贴到四边形和三角行上,但将纹理贴到一般的曲面上认为很困难,其实 通过本文的简单分析,其实很简单.本文以波浪模拟为例,来介绍一般纹理贴图技术,大家很容易举一反三来 模 ...

  7. opengl es纹理贴图效果实例

    一.先准备好一张用来贴图的照片 二.纹理效果代码: gl.glEnable(GL10.GL_TEXTURE_2D);// 创建纹理gl.glGenTextures(1, textureids, 0); ...

  8. opengl android 纹理贴图 代码,Android 使用opengl es的纹理贴图白屏问题请教。

    各位大侠好: 我在使用open gl es的做显示的时候,发现一个问题,请各位帮助一下,谢谢. 环境:opengl es 1.x,2D的模式显示纹理图片. 在LG-P990,HTC-C510E上显示附 ...

  9. windows下opengl多重纹理贴图

    参考:http://blog.sina.com.cn/s/blog_4a082449010138kt.html 转自:http://www.cnblogs.com/waytofall/archive/ ...

最新文章

  1. 数据驱动科技赋能,东吴证券打造数据中台“九大能力”
  2. inputstreamreader未关闭会导致oom_【搞定面试官】你还在用Executors来创建线程池?会有什么问题呢?
  3. jmeter参数化之配置元件CSV控件
  4. JAVA实现网页版斗地主_使用Java实现简单的斗地主案例
  5. 图解MongoChef的安装步骤
  6. 推荐一个好看且实用的火狐浏览器新标签页插件【火狐浏览器新标签页自定义美化】
  7. roslyn c#脚本_使用ScriptCS和Roslyn的无项目脚本C#
  8. 【Python实例】获取今日零点的datetime
  9. 温度转换(摄氏温度转化氏温度)
  10. 【中级】2017项目集成管理工程师备考第五章-立项管理(上)
  11. 快速学习-mocha 简介与入门
  12. 鬼吹灯java攻略_密室逃脱鬼吹灯攻略完美过关图文详解
  13. 数字逻辑计算机组成,数字逻辑设计与计算机组成pdf
  14. 无法访问其它家庭组计算机,Win7电脑同一个家庭组或者工作组,电脑无法相互访问...
  15. linux文件目录类、pwd 显示当前工作目录的绝对路径、列出目录的内容
  16. 网站推广工具易推宝是什么?
  17. html 查看更多按钮样式,CSS3多样式按钮
  18. 阿里云服务器是什么,可以用来干嘛?
  19. 我遇见了一个问题求帮助
  20. 深度解决企业传统办公痛点,华为云桌面使能云上办公!

热门文章

  1. iOS5.0.1完美越狱教程 iPhone4可越狱了[转]
  2. AMD HSA 异构计算架构和AMD-KFD内核驱动NVIDIA内核驱动
  3. 一往无前,热爱成就人生——对话阿里云 MVP黄军雷
  4. 京津冀交通一体化规划公布 四纵四横一环格局确定
  5. 《第一行代码》——活动
  6. 「未来进行时」NFT艺术展览即将登陆杭州 | 世界区块链大会
  7. mykit-db-sync之——数据库同步工具正式开源
  8. python仿真_mpython仿真功能之于掌控板
  9. 这一套完整的后台管理系统(附源码),你看过没
  10. java数据过载_垃圾收集过载,Java