OpenGl纹理+缩放位移旋转

news/2024/4/16 12:57:23/文章来源:https://blog.csdn.net/DMC111qwf/article/details/126914922

纹理:它是一张2D图片,它可以用来添加物体的细节。可以想象一张贴满墙壁的纸,壁纸画的砖块就是纹理。

如何把纹理映射到三角形上?

答:指定三角形每个顶点各自对应纹理哪个部分,每个顶点关联纹理坐标。

纹理的环绕方式?

答:把纹理坐标设置在范围之外有四种环绕方式:重复纹理图像,重复但是镜像放置,重复纹理坐标边缘,用户指定。

纹理过滤方式?

答:当物体很大但纹理分辨率很小时,有两种过滤方式,邻近过滤选用中心最接纹理那个颜色作为当前像素,线性过滤选取周围平均值作为当前像素,前者简单但看起来有颗粒感,后者计算复杂到平滑。

多级渐进纹理?

答:距观察者的距离超过一定阈值,OpenGl会使用不同的多级渐远纹理,即最适合物体的距离的那个。

加载与创建纹理?

答:使用stb_image.h;

unsigned char *data = stbi_load("container.jpg", &width,&height, &nChannels,0);

glGenTextures() //创建纹理,得到纹理id

glBindTexture() //将GL_TEXTURE_2D与texture绑定在一起

glTextParameteri() //设置重复,过滤参数

stbi_load() //加载纹理图片

glTexImage2D() //绑定的纹理对象就会被附加上纹理图像

glGenerateMipmap() //为当前得纹理自动生成所需的多级渐远纹理。

glBindTexture() //绑定texture准备渲染

缩放位移旋转

glm它是为opengl量身定制的数学库。

glm::mat4  transform = glm::mat4(1.0f);

transform = glm::translate(transform, glm::vec3(0.5f, -0.5f, 0.0f));//分别在x,y移动0.5个单位

transform = glm::rotate(transform,  glm::vec3(0, 0, 1.0f));//沿z轴旋转90度

transform = glm::scale(transform,  glm::vec3(0.5, 0.5, 0.5));//缩放一倍

glUniformMatrix4fv(transformloc, 1, glm::value_ptr(transform));//将变化信息传递给着色器,前提是在着色器定义一个mat4的uniform变量接收,然后位置坐标乘以这向量。这个

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Unity】如何优雅地移动物体-8个方法

在游戏开发中,如何移动物体?是我们需要思考的事情。 Unity 引擎也提供了众多的方法,每个开发者的使用习惯也各不相同,所以往往不是很清楚在这种场景下哪种方式最好的或者最有效的。 那么,这篇文章,我想分享…

【牛客刷题日记】— Javascript 通关秘籍

CSDN话题挑战赛第2期 参赛话题:面试宝典 *众人拾柴火焰高,我们一起携手共筑面试宝典,大家可以将各语言各技术各类面试真题或者你刷过的面试题汇聚于此,金九银十之际,让我们助应聘同学一臂之力~ 前进之路 题一&#x…

在TX2平台编译安装飞桨Paddlepaddle

安装nccl: git clone https://github.com/NVIDIA/nccl.git cd nccl make -j4 sudo make install 配置CUDA: (Bashrc配置:) export PATH/usr/local/cuda-10.2/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH 下载Paddle-2.1.0源码并解压…

Prometheus系列第九篇一核心之micrometer架构

文章目录架构图系统模块总结架构图 MeterRegistry有两大类[SimpleMeterRegistry,CompositeMeterRegistry]单注册源和多注册源MeterRegistry针对不同数据源实现包含 HealthMeterRegistry PrometheusMeterRegistry AtlasMeterRegistry etc… PrometheusMeterRegistry负责创建m…

ElasticSearch(六)【分词器】

六、分词器 6.1 分词器介绍 Analysis 和 Analyzer Analysis:文本分析是把全文本转换一系列单词(term/token)的过程,也叫分词(Analyzer)。Analysis是通过Analyzer来实现的。分词就是将文档通过Analyzer分成一…

k8s创建并发布WordPress

WordPress 简介 WordPress 是使⽤ PHP 语⾔开发的内容管理系统软件,⽤户可以在⽀持 PHP 和 MySQL 数据库的服务器上使⽤⾃⼰的博客,⼀个完整的 WordPress 应⽤程序包括以下 Kubernetes 对象。 ⽬的 演示如何在 KubeSphere 中创建应⽤程序(以…

Springboot毕设项目基于Java的比亚迪汽车大数据评分系统c34pk(java+VUE+Mybatis+Maven+Mysql)

Springboot毕设项目基于Java的比亚迪汽车大数据评分系统c34pk(javaVUEMybatisMavenMysql) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEc…

公众号查题方法-授权即可使用

公众号查题方法-授权即可使用 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台&#x…

SpringSecurity系列 - 13 SpringSecurity 密码加密认证 PasswordEncoder

文章目录01. 密码加密算法简介02. 环境准备03. 认证流程源码分析步骤1: AbstractAuthenticationProcessingFilter#doFilter 认证请求入口方法步骤2:UsernamePasswordAuthenticationFilter#attemptAuthentication 尝试认证方法步骤3:ProviderM…

MySQL-锁

MySQL-锁 锁分类 MySQL中锁按照粒度分,分为以下三类 全局锁:锁定数据库中的所有表表级锁:每次操作锁住整张表行级锁:每次操作锁住对应的行数据 全局锁 全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状…

Koltin协程:异步热数据流的设计与使用

一.异步冷数据流 在Kotlin协程:协程的基础与使用中,通过使用协程中提供的flow方法可以创建一个Flow对象。这种方法得到的Flow对象实际上是一个异步冷数据流,代码如下: private suspend fun test() {val flow flow {emit(1)emit(…

ESP8266升級SDK到V3.0版本編譯報錯

編譯報錯信息 bin/libmain2.a(app_main.o): In function `user_uart_wait_tx_fifo_empty: (.irom0.text+0x678): undefined reference to `user_pre_init bin/libmain2.a(app_main.o): In function `system_phy_freq_trace_enable: (.irom0.text+0x6e4): undefined reference t…

SpringCloud基础7——Redis分布式缓存

用于复习快速回顾。 目录 1.Redis持久化 1.1.数据备份文件RDB持久化方案 1.1.1.执行时机 1.1.2.RDB原理 1.1.3.小结,bgsave流程、执行时间、缺点 1.2.追加文件AOF持久化方案 1.2.1.AOF原理 1.2.2.AOF配置 1.2.3.AOF文件重写 1.3.RDB与AOF对比 2.Redis主…

getBean方法源码

一、 三个API // 根据name获取bean Override public Object getBean(String name) throws BeansException {return doGetBean(name, null, null, false); }// 根据name获取bean&#xff0c;如果获取到的bean和指定类型不匹配&#xff0c;则抛出异常 Override public <T>…

C++11 - 8 -智能指针

C11 - 智能指针前言&#xff1a;普通指针&#xff1a;安全隐患&#xff1a;其他函数异常&#xff1a;new函数异常&#xff1a;智能指针&#xff1a;RAII原理&#xff1a;smart_ptr&#xff1a;auto_ptr&#xff1a;管理权转移&#xff1a;优点&#xff1a;缺点&#xff1a;uniq…

报告分享|2022汽车生态营销白皮书

报告链接&#xff1a;http://tecdat.cn/?p28679 不确定性增加&#xff0c;消费意愿在压力下等待释放 今年3月以来&#xff0c;受国际冲突和国内环境双重影响&#xff0c;能源价格大幅上涨&#xff0c;导致全球供应不稳定趋势加深&#xff0c;宏观经济下行压力明显&#xff0…

程序设计竞赛-过了这个村没这个店

文章目录个人经验竞赛简介蓝桥杯天梯赛CCPCICPC其他个人经验 初闻不知曲中意&#xff0c;再闻已是曲中人。 标题无意夸张&#xff0c;但是竞赛生涯的时间真的不长&#xff0c;机会真的错过了就没有了。一般来说&#xff0c;大一打基础&#xff0c;学习编程语言、数据结构和算法…

Moment.js的常用函数、借助vue和Moment.js实现一个简单的时钟

前言 项目中关于时间的处理是挺常见的&#xff0c;虽然之前就知道有Moment.js这个库&#xff0c;但是一直没有接触过。只不过最近同事在项目中使用了&#xff0c;那也只能简单学习一下&#xff0c;不然遇到了完全看不懂。 本文只介绍一下常用的函数&#xff0c;其他内容可以在…

想换工作?那还不赶紧来看看这份面试题

引言 “寒冬”之下&#xff0c;诸如 “Android 凉了”之类的话我已经屡见不鲜了&#xff0c;现在互联网行业的热潮已经褪去&#xff0c;开始恢复冷静&#xff1b;这样一来&#xff0c;互联网公司就会面向大量的开发者们&#xff0c;因此对应的要求只会越来越高&#xff1b;据反…

用纯css实现一个图片拼接九宫格

<style> body{ margin: 0; padding: 0; // 设定居中 display: flex; justify-content: center; align-items: center; height: 100vh; } .container{ width: 300px; height: 300px; display: flex; // 子盒子布局&#xff0c;要让子盒子之间有间隙就把宽高设大一些。 jus…