Opengl实现纹理贴图
纹理贴图的步骤
- 创建纹理对象,并为它指定一个纹理
- 确定纹理如何应用到每个像素上
- 启用纹理贴图功能
- 绘制场景,提供纹理坐标和几何图形坐
Tips:纹理坐标必须在RGBA模式下才能使用,在颜色索引模式下是未定义的行为
一、创建纹理对象,并为它指定一个纹理
static GLuint texName;
glGenTextures(1, &texName); //创建1个纹理对象,&texName指向纹理索引
glBindTexture(GL_TEXTURE_2D, texName);//绑定纹理:改变OpenGL状态,使得后续的纹理操作都对texName指向的2D纹理生效
二、确定纹理如何应用到每个像素上
- 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 //内存中指向纹理图像的指针
);
三、启用纹理贴图功能
glEnable(GL_TEXTURE_2D);//启用纹理贴图
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);//指定纹理贴图与材质的混合模式
glBindTexture(GL_TEXTURE_2D, texName);//绑定纹理
四、绘制场景,提供纹理坐标和几何图形坐标
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实现纹理贴图相关推荐
- OpenGL立方体纹理贴图
OpenGL正方体纹理贴图 0. 写在最前面 1. 正方体顶点属性构建 2. 绑定多个VAO.VBO 3. 创建多个纹理 4. 渲染循环 5. 实现代码 6. 多个立方体纹理贴图 0. 写在最前面 要 ...
- openCV读入图片,openGL实现纹理贴图
本文结合结合openCV,openGL的优点,实现混合编程. (1)OpenCV提供图形处理和计算机视觉方面的通用算法,读入二维图片很方便: (2)OpenGL是跨平台的图形程序接口,它用于二维,三维 ...
- 纹理窗口Qt+OpenGL之纹理贴图
上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下纹理窗口 NeNe的代码中是加载到了一个正方体当中,代码很长.其实单纯的想要纹理贴图是很便利的.具体的纹理贴图技巧在 ...
- 手把手教会OpenGL之纹理贴图、包含纹理载入、纹理过滤、边界处理、纹理参数设置(入门级别案例,棋盘)
一.OpenGL中纹理的加载(对glTexImage2D函数的使用) 二.纹理过滤(glTexParameteri参数中的GL_TEXTURE_MAG_FILTER与 GL_TEXTURE_MIN_F ...
- OpenGL:纹理贴图
纹理贴图是在栅格化的模型表面上覆盖图像的技术.它是为渲染场景添加真实感的最基本和最重要的方法之一.硬件也为纹理贴图提供了硬件支持,使得它具备实现实时的照片级真实感的超高性能.纹理单元是专为纹理设计的硬 ...
- OpenGL曲面纹理贴图技术--波浪的模拟(转 作者 Y_Y)
学过OpenGL的人都很容易的把图片贴到四边形和三角行上,但将纹理贴到一般的曲面上认为很困难,其实 通过本文的简单分析,其实很简单.本文以波浪模拟为例,来介绍一般纹理贴图技术,大家很容易举一反三来 模 ...
- opengl es纹理贴图效果实例
一.先准备好一张用来贴图的照片 二.纹理效果代码: gl.glEnable(GL10.GL_TEXTURE_2D);// 创建纹理gl.glGenTextures(1, textureids, 0); ...
- opengl android 纹理贴图 代码,Android 使用opengl es的纹理贴图白屏问题请教。
各位大侠好: 我在使用open gl es的做显示的时候,发现一个问题,请各位帮助一下,谢谢. 环境:opengl es 1.x,2D的模式显示纹理图片. 在LG-P990,HTC-C510E上显示附 ...
- windows下opengl多重纹理贴图
参考:http://blog.sina.com.cn/s/blog_4a082449010138kt.html 转自:http://www.cnblogs.com/waytofall/archive/ ...
最新文章
- 数据驱动科技赋能,东吴证券打造数据中台“九大能力”
- inputstreamreader未关闭会导致oom_【搞定面试官】你还在用Executors来创建线程池?会有什么问题呢?
- jmeter参数化之配置元件CSV控件
- JAVA实现网页版斗地主_使用Java实现简单的斗地主案例
- 图解MongoChef的安装步骤
- 推荐一个好看且实用的火狐浏览器新标签页插件【火狐浏览器新标签页自定义美化】
- roslyn c#脚本_使用ScriptCS和Roslyn的无项目脚本C#
- 【Python实例】获取今日零点的datetime
- 温度转换(摄氏温度转化氏温度)
- 【中级】2017项目集成管理工程师备考第五章-立项管理(上)
- 快速学习-mocha 简介与入门
- 鬼吹灯java攻略_密室逃脱鬼吹灯攻略完美过关图文详解
- 数字逻辑计算机组成,数字逻辑设计与计算机组成pdf
- 无法访问其它家庭组计算机,Win7电脑同一个家庭组或者工作组,电脑无法相互访问...
- linux文件目录类、pwd 显示当前工作目录的绝对路径、列出目录的内容
- 网站推广工具易推宝是什么?
- html 查看更多按钮样式,CSS3多样式按钮
- 阿里云服务器是什么,可以用来干嘛?
- 我遇见了一个问题求帮助
- 深度解决企业传统办公痛点,华为云桌面使能云上办公!
热门文章
- iOS5.0.1完美越狱教程 iPhone4可越狱了[转]
- AMD HSA 异构计算架构和AMD-KFD内核驱动NVIDIA内核驱动
- 一往无前,热爱成就人生——对话阿里云 MVP黄军雷
- 京津冀交通一体化规划公布 四纵四横一环格局确定
- 《第一行代码》——活动
- 「未来进行时」NFT艺术展览即将登陆杭州 | 世界区块链大会
- mykit-db-sync之——数据库同步工具正式开源
- python仿真_mpython仿真功能之于掌控板
- 这一套完整的后台管理系统(附源码),你看过没
- java数据过载_垃圾收集过载,Java