OpenGL3.3_C++_Windows(14)

demo演示

demo演示

天空盒

  1. 作用:
  2. 我们想要一个立方体每个面都有不同的纹理,可以在while使用:glActiveTexture(),激活绑定相应纹理,glVertexAttribPointer设置布局,glDrawArrays()设置绘制的顶点数(部分)
  3. 也可以使用立方体贴图,立方体贴图有一个非常有用的特性,它可以通过一个方向向量来进行索引/采样,比如天空盒,我们就可以根据方向向量,计算出对应的像素,从而映射到被影响的物体上。
  4. 我们将把6张纹理合并到一张纹理中,直接通过samplerCube采样器映射到立方体上,从而每个顶点能够正确从纹理采样,获取相应的颜色值,输出到颜色缓冲中。
  5. 如何采样纹理:
  6. 和Vec2  TexCoord不同的是,当立方体的中心位于原点,将所有顶点的纹理坐标(vec3在3维坐标采样) 当作 立方体的顶点位置(vec3),
  7. 通过使用立方体的实际位置向量进行采样(只关心矢量的方向,方向向量的原点位于它的中心,会根据所击中的纹素,并返回对应的采样纹理值)
  8. 天空盒:与普通的立方体有些区别
  9. 天空盒特性:
    1. 渲染了普通的立方体(没有model变换,将默认位于世界中心),但是因为view中的位移存在,立方体随着摄像机(反转)运动,想让玩家(坐标原点)永远位于立方体中,可以通过:移除立方体的位移        :
glm::mat4 view = glm::mat4(glm::mat3(camera.GetViewMatrix()));  
    1. 需要渲染在所有物体的后面:可以将输出位置的z分量等于它的w分量,当透视除法执行之后,z永远变为1,深度值永远是最大的
  1. 代码

    1. 将6个路径添加到vector<std::string>数组中,创建6个纹理,这回绑定到GL_TEXTURE_CUBE_MAP……,接着调用glTexImage2D(),需要告诉专门对应立方体贴图的一个面,这些参数都是连续的,可以通过GL_TEXTURE_CUBE_MAPX + i实现
    2. 环绕方式:3D纹理:str坐标轴设置
    3. vertex glsl中将位置向量作为输出给片段着色器的纹理坐标
  2. 环境映射:
  3. 反射:让当前片段的颜色 =从贴图中获取经过reflect的方向向量,对应的颜色值
  4. 折射:材质都有自己的折射率,决定了材质中光线弯曲的程度,
  5. 计算折射率:光线/视线从x进入y = x折射率  / y折射率
  6. 计算方向向量:依旧通过refract,第3个参数传入折射率ratio

demo问题

  1. glTexImage2D和glTextureStorage2D的区别:
    1. glTexImage2D允许在每次调用时改变纹理图像的大小和格式,可能会降低一些性能
    2. glTextureStorage2D纹理的尺寸和格式就固定下来,不可更改,使用不可变存储可以提高性能
  2. 解决调整窗口大小时物体形变问题:
    1. 原因:在顶点由局部坐标——屏幕坐标的过程的映射时,如果投影矩阵的纵横比非窗口(framebuffer_size_callback()获取到这个值)的比例,映射时会发生形变
    2. 解决:在while中更新投影矩阵的纵横比
    3. 帧缓冲原因:纹理 / 渲染缓冲 附件的大小非窗口大小,将纹理映射到四边形上,发生形变
    4. 解决:同样在while中更新附件的纵横比
  3. 多重渲染(MRT):片段着色器可以输出多个颜色值,可以分别保存到不同的颜色缓冲区中,可以通过glReadBuffer()从哪个颜色缓冲区读取数据。

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

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

相关文章

21.0docker企业级镜像仓库harbor(vmware 中国团队)

docker企业级镜像仓库harbor(vmware 中国团队) 网站下载harbor软件包 https://github.com/goharbor/harbor 查看软件安装harbor版本需求限制 本地环境需求已满足 点击下载harbor安装包 点击releases根据版本信息下载 下面的在线安装就是docker pull。离线就是下载之后…

机器学习课程复习

参考书目:《统计学习方法》 选择题 5道 3分/道 填空题 5道 3分/道 简答题 3道 计算题 1道 算法设计题 1道 隐马尔可夫不考计算题 很有可能考计算题的知识点:KNN、决策树、支持向量机、聚类算法 小概率会考计算题的知识点:线性回归(最小二乘法,代公式算参…

23种设计模式之桥接模式

桥接模式 1、定义 桥接模式&#xff1a;将抽象部分与它的实现部分解耦&#xff0c;使得两者都能独立变化 2、桥接模式结构 Abstraction&#xff08;抽象类&#xff09;&#xff1a;它是用于定义抽象类的&#xff0c;通常是抽象类而不是接口&#xff0c;其中定义了一个Imple…

Spark Core内核调度机制详解(第5天)

系列文章目录 如何构建DAG执行流程图 (掌握)如何划分Stage阶段 (掌握)Driver底层是如何运转 (掌握)确定需要构建多少分区(线程) (掌握) 文章目录 系列文章目录引言一、Spark内核调度&#xff08;掌握&#xff09;1.1、内容概述1.2、RDD的依赖1.3、DAG和Stage1.4、Spark Shuffl…

Dockerfile封装制作pytorch(tensorflow)深度学习框架 + jupyterlab服务 + ssh服务镜像

一&#xff1a;docker-hub官网寻找需求镜像 1.我们在https://hub.docker.com/官网找到要封装的pytorch基础镜像&#xff0c;这里我们以pytorch1.13.1版本为例 2.我们找到的这个devel版本的镜像&#xff08;我们需要cuda的编译工具&#xff09; pytorch版本是1.13.1&#xff0c;…

网络校时服务器:铁路对时有妙招

在信息高速发展的今天&#xff0c;铁路作为国家的经济大动脉&#xff0c;与广大市民生活息息相关&#xff0c;担负着运送大流量乘客、保证交通畅通的重任&#xff0c;为了保证列车的正点运行和乘客的行程&#xff0c;对时间精准度的要求是非常严格的。随着我国铁路的发展速度和…

【CRASH】freelist异常导致的异常地址访问

freelist异常导致的异常地址访问 问题现象初步分析继续深入新的发现沙盘推演寻找元凶分析代码后记 问题现象 项目一台设备几天内出现了两次crash&#xff0c;都是异常地址访问导致。 [66005.261660] BUG: unable to handle page fault for address: ffffff8881575110初步分析…

AOSP平台开发的利器——Android Studio for Platform

Android Studio for Platform (ASfP) 是一个为使用 Soong 构建系统构建的 Android 开源项目&#xff08;AOSP&#xff09;平台开发者而设计的 Android Studio IDE 版本。与标准 Android Studio 不同&#xff0c;ASfP 具有多语言支持&#xff0c;可以在同一 IDE 中编写 C、Kotli…

分页插件bs_pagination与Bootstrap4、jQuery3.7.1不兼容的问题

问题场景&#xff1a; 开发环境&#xff1a; 项目&#xff1a;CRM IDE&#xff1a;intelij IDEA JDK: jdk21.0.2 JQuery&#xff1a;3.7.1 Bootstrap&#xff1a;4.6 项目中需要查询数据库中的数据&#xff0c;并且以分页显示的方式显示在页面上&#xff0c;前端页面用到了分页…

新书速览|Ubuntu Linux运维从零开始学

《Ubuntu Linux运维从零开始学》 本书内容 Ubuntu Linux是目前最流行的Linux操作系统之一。Ubuntu的目标在于为一般用户提供一个最新的、相当稳定的、主要由自由软件构建而成的操作系统。Ubuntu具有庞大的社区力量&#xff0c;用户可以方便地从社区获得帮助。《Ubuntu Linux运…

高效、智能、安全:小型机房EasyCVR+AI视频综合监控解决方案

一、背景需求分析 随着信息技术的迅猛发展&#xff0c;小型机房在企事业单位中扮演着越来越重要的角色。为了确保机房的安全稳定运行&#xff0c;远程监控成为了必不可少的手段。 二、视频监控 视频监控是机房远程监控的重要组成部分。通过安装IP摄像机及部署视频监控系统Ea…

11.【机器学习】十大算法之一随机森林算法原理讲解

【机器学习】十大算法之一随机森林算法原理讲解 一摘要二个人简介三什么是随机森林&#xff1f;3.1 决策树3.2 集成方法3.2.1 Bagging方法3.2.2 Boosting方法 3.3 随机森林算法3.4 随机的含义 四案例演示一4.1 利用随机森林进行特征选择&#xff0c;然后使用SVR进行训练4.2 利用…

qt事件和连接TCP协议

QT网络聊天室服务器实现 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),server(new QTcpServer(this))//给服务器指针实例化一个空间 {ui->setupUi(this); }Widget::~Widget() {d…

『Z-Weekly Feed 08』加密资产观 | FHE应用前景 | OPAL协议

一位机构投资者的加密资产观 作者&#xff1a;Hongbo 01 &#x1f4a1;TL;DR 在加密投资领域如何找到真正的“价值”&#xff1a;Crypto 作为一种新兴资产&#xff0c;应该找到一种区别于传统公司股票资产的估值方法&#xff0c;本文重点阐述了加密货币作为新的资产类型与传统资…

Artalk-CORS,跨域拦截问题

今天重新部署Artalk之后&#xff0c;遇到了CORS——跨域拦截的问题&#xff0c;卡了好一会记录一下。 起因 重新部署之后&#xff0c;浏览器一直提示CORS&#xff0c;之前在其他项目也遇到过类似的问题&#xff0c;原因就在于跨域问题。

Docker私有化仓库Harbor安装流程

1.搭建Docker私有仓库主要有以下几种方式 使用Docker官方提供的Registry镜像&#xff1a;Docker官方提供了一个用于构建私有镜像仓库的Registry镜像&#xff0c;只需将镜像下载并运行容器&#xff0c;然后暴露5000端口即可使用。可以通过修改Docker的配置文件daemon.json&#…

C# WPF入门学习主线篇(二十二)—— 样式(Styles)的定义和应用

C# WPF入门学习主线篇&#xff08;二十二&#xff09;—— 样式&#xff08;Styles&#xff09;的定义和应用 欢迎来到C# WPF入门学习系列的第二十二篇。本篇文章将详细介绍WPF中的样式&#xff08;Styles&#xff09;的定义和应用。样式在WPF中起到重要作用&#xff0c;通过样…

西木科技Westwood-Robotics人型机器人Bruce配置和真机配置

西木科技Westwood-Robotics人型机器人Bruce配置和真机配置 本文内容机器人介绍Bruce机器人Gazebo中仿真代码部署Bruce真机代码部署 本文内容 人形机器人Brcue相关介绍docker中安装Gazebo并使用Bruce机器人控制器更换环境配置 机器人介绍 公司&#xff1a;西木科技Westwood-R…

milvus元数据解析工具milvusmetagui介绍使用

简介 milvusmetagui是一款用来对milvus的元数据进行解析的工具&#xff0c;milvus的元数据存储在etcd上&#xff0c;而且经过了序列化&#xff0c;通过etcd-manager这样的工具来查看是一堆二进制乱码&#xff0c;因此开发了这个工具对value进行反序列化解析。 在这里为了方便交…

高速公路收费图片分析系统深入理解

当今社会&#xff0c;随着交通运输业的快速发展&#xff0c;高速公路已成为人们出行的重要选择。而高速公路收费系统作为保障道路可持续运营的重要组成部分&#xff0c;其效率和准确性对于保障道路畅通和交通安全至关重要。近年来&#xff0c;随着技术的不断进步&#xff0c;高…