OpenGL之纹理映射

news2024/10/6 8:22:23

1.1 Texture Mapping

1.1.1 在OpenGL编程中,应用纹理主要分为四步:

  • 创建纹理对象,并为它装载一个纹理;
glGenTexture(1,&texName);				//为每个纹理编号,1代表生成一个编号
glBindTexture(GL_TEXTURE_2D,texName);	//绑定纹理,将会对绑定的纹理进行操作;
glTexImage2D(...);						//装载纹理,从内存载入显存;

glDeleteTextures(GLsizei n,const GLuint *textures);
  • 确定纹理如何应用到每个像素上;
glTexEnvf(GLenum target,GLenum pname,GLfloat param);
/*
	target 必须是GL_TEXTURE_ENV;
	pname必须是GL_TEXTURE_ENV_MODE;
	param 可以为:GL_MODULATE、GL_DECAL、GL_BLEND、GL_REPLACE;纹理应用到每个像素的方式,就是在片元处理阶段是相乘、混合还是替代;
*/
  • 启用纹理贴图功能;
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,texName);
  • 绘制场景,提供纹理坐标和几何图形坐标;
glTexCoord2f(...);

/*
	纹理坐标范围是[0,1]之间,如果出现超出范围的情况,可以设置纹理的wrap方式;
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); //设置S方向REPEAT,即重复;
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP); //设置T方向CLAP,即截断;
*/
glVertex3f(...);

1.1.2 纹理的几何变换

glMatrixMode(GL_TEXTURE);
glTranslate(x,y,z);
glRotatef(angle,x,y,z);
glScalef(sx,sy,sz);
glMatrixMode(GL_MODELVIEW);
  • 常见的应用是实现流动水面的效果;

1.1.3 一维纹理与三维纹理

  • glTexImage1D
  • glTexImage3D

1.2 在图形流水线中,纹理映射为:

  • 在顶点处理阶段,给定顶点的纹理坐标;
  • 光栅化阶段:插值得到每个片元的纹理坐标;
  • 在片元处理阶段,根据纹理坐标获取片元的纹理值;

1.2.1 纹理数据的获取

  • 程序生成;
  • 读取图片文件
  • 拷贝屏幕的部分区域为当前纹理;
glCopyTexImage2D();

在这里插入图片描述

  • 替换纹理图像的一部分;
glTexSubImage2D();

在这里插入图片描述

  • 拷贝屏幕并替换当前纹理的一部分区域;
glCopyTexSubImage2D();

在这里插入图片描述

  • 使用帧缓冲区对象直接渲染到纹理;

1.2.2 BMP、JPEG等图像文件中不包含透明度信息,而TGA文件可以携带透明度信息,还具有压缩格式和非压缩格式两种存储方式。另外,png、dds等也可以携带透明通道信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/4982.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一道题学习node.js中的CRLF注入

前言 这几天刷题遇到在node.js题目中注入CRLF实现ssrf的题目,对于我来说知识听新颖。在此记录一下。 CRLF注入 学习过http请求走私漏洞的师傅对于这个CRLF肯定不会陌生。所谓的CRLF就是回车加换行。常用于http数据包。字段之间用一个CRLF分割,首部和主…

【MySQL篇】约束语法及演示总结(全)

目录 理解约束: 约束语法及添加、删除约束语法: 约束总览: ​1、非空约束 2、唯一约束 3、主键约束 4、默认约束 5、外键约束 案例演示: 加深格式记忆: 理解约束: 约束实际上就是我们对表中数据的…

Redis命令及原理学习(一)

redis介绍 redis 是 Remote Dictionary Service 的简称;也是远程字典服务; 节点 通过tcp与redis建立连接交互请求回应模型 redis是一种内存数据库:数据都在内存中。redis是一种kv数据库: 存储方式操作方式 redis是一种数据结构数…

【访谈】Eotalk Vol.05: API 全生命周期管理,如何解决企业 API 安全问题

Eotalk 是由 Eolink 和各合作方一起发起的泛技术聊天活动,每期我们会邀请一些技术圈内的大牛聊聊天,聊一下关于技术、创业工作、投融资等热点话题。 本期 Eotalk 我们邀请到的嘉宾是来自星阑科技的 CTO 徐越~ 👏👏 徐越是一位 90…

红黑树(4万字文章超详细,只为一个目的)

我写这篇文章的主要目的其次才是积累知识,主要是因为我想打一个同学的脸. 事情是这样的.我现在中学嘛,我们班上有一个同学他学了红黑树啊,就一副"不可一世"的样子.在我面前炫耀啊.当时我就想立马打他的脸,可是我有没有实力,所以才学习红黑树学到深夜,写了篇博客.言归…

深度解析:会用Excel,还有必要学Python吗?

前言 某站上有个问题: 我都会用Excel了,还有必要学Python吗? (文末送读者福利) 这个问题大概率可以说明问这个问题的这位同学目前还没有遇到非Python不可的场景,之所以产生了学Python的念头是因为这两年P…

今日分享:文字转语音软件哪个好

如今已经进入到了一个短视频时代,大家饭后或者闲暇时都会通过刷视频来消磨时间,而部分小伙伴看到一些有趣的内容,也想试着自己制作一下。但众所周知,视频拍摄容易,后期剪辑制作确实异常困难的,有许多道工序…

从boot引导到loader引导完整运行

此文针对该文章对loader引导进行了完善后的完整运行过程。(具体细节请参见下文) boot引导升级,成功引导运行loader_What’smean的博客-CSDN博客boot引导升级,成功引导运行loaderhttps://blog.csdn.net/weixin_42492218/article/d…

【数据结构】11道LeetCode链表OJ练习

文章目录1. 移除链表元素2. 反转链表3. 链表的中间节点4. 链表中倒数第k个节点5. 合并两个有序链表6. 链表分割7. 链表的回文结构8. 相交链表9. 环形链表10. 环形链表II11. 复制带随机指针的链表补充内容:浅谈顺序表和链表的区别1. 移除链表元素 移除链表元素OJ链接…

扫雷游戏优化详解——c语言实现

文章目录 一、扫雷游戏的简单认识与解释 二、扫雷游戏的代码及思路实现 一、扫雷游戏的思路 1、菜单打印 2、创建扫雷区 3、初始化雷区 4、打印雷区 5、布置雷区 6、排雷 三、扫雷游戏代码的整合 game.h game.c test.c 标题:猜数字小游戏 作者:Ggggg…

你适合考PMP还是软考?两者的区别是否清楚,分别能给你带来什么价值

PMP与软考之间有什么区别,应该考哪个更适合自己? 下面从9个方面给大家简单的介绍做一个对比,希望能帮上忙~ 软考和PMP哪个更适合自己? 01 考试介绍 PMP:PMP是项目管理专业人士资格认证,由美国项目管理协…

腾讯云相同配置8核16G的云服务器和轻量服务器该如何选择?

很多个人或者中小企业用户在选择云服务器的时候,已经确认配置的情况下,去选购的时候发现有出现了轻量应用服务器,那么轻量应用服务器和云服务器又有哪些区别,价格为啥又有那么大的差别,该如何选择呢? 从上边…

SSM框架整合详细教程

目录 1. 什么是SSM? 2. SSM整合的时候容器之间如何访问 3. SSM下面的开发步骤 4. SSM整合时候时容易混乱的知识点 1. 什么是SSM? SSM是对三个框架名字的简写,其中第一个S指的是SpringMVC,第二个S指的是Spring,第三个M指的是M…

项目搭建(七)爱心代码❤网站部署(静态网站)

爱心代码❤网站部署(静态网站)一、环境基础二、修改Tomcat启动配置三、放置静态网站四、启动Tomcat一、环境基础 如果你已经部署了Apache-Tomcat,恭喜你,你已经完成90%的部署工作 如果没有tomcat,那你先部署tomcat吧 …

4_单机优化(确定性算法,优化框架)

优化框架机器学习的优化框架正则化经验风险最小化优化算法的收敛速率假设条件凸函数定义强凸函数定义光滑函数定义优化算法的分类机器学习的优化框架 正则化经验风险最小化 有监督的机器学习问题: 假设输入输出数据 Sn{(xi,yi);i1,...,n}S_n \left\{(x_i, y_i);…

C++与C语言中的字符串

目录 1、关于c语言中的字符串 (1)c语言中字符串与字符指针 (2)字符串结尾 2、关于c中的字符串string (1)从本质上了解string (2)c中的字符串转换与关联 (3&#x…

【MySQL入门指北】MySQL备份及恢复

MySQL备份及恢复 文章目录MySQL备份及恢复1.Percona 介绍2.安装Percona 需要的 MySQL 包3.安装percona-xtrabackup4.完全备份流程5.完全恢复流程6.增量备份流程7.差异备份8.差异恢复流程9.记录的导入和导出10.mysqldumpbinlog11.MySQL恢复数据12.二进制日志恢复13.误删除库的问…

基于51单片机的室内温度可燃气体检测报警系统Proteus仿真

资料编号:133 下面是相关功能视频演示: 133-基于51单片机的室内温度可燃气体检测报警系统Proteus仿真(源码仿真全套资料)功能介绍: 采用51单片机作为主控,LCD1602显示当前温度和可燃气体浓度,…

Netty源码阅读(1)之——客户端源码梗概

目录 准备 开始 NioSocketChannel 的初始化过程 指定 初始化 关于unsafe属性: 关于pipeline的初始化 小结 EventLoopGroup初始化 小结 channel的注册过程 handler的注册过程 客户端连接 总结 准备 源码阅读基于4.1.84.Final版本。从github下载netty项目…

WordPress设置浏览器切换标签网站动态标题

我们在逛别人网站的时候,经常看到,有些网站当我们离开该页面浏览其他页面的时候,离开的页面标题上会显示比如:“你别走吖 Σ(っ Д ;)っ”这样的字样,当我们点回来的时候页面上面的标题又变成了“你又回来啦&#xff0…