OpenGL的渲染流水线:

2023-10-26

OpenGL的渲染流水线:

OpenGL的坐标系

在3D图形学里,OpenGL为右手坐标系(准确来说,OpenGL的世界空间和相机空间是右手坐标系)。随便提一下,D3D11为左手坐标系。
(1) 右手坐标系
(2) 左手坐标系

OpenGL的矩阵和向量结合方式

OpenGL的向量为列向量,矩阵和向量采用的方式为“矩阵X列向量”的方式,而D3D11为"行向量X矩阵"的方式。OpenGL的向量矩阵结合如下所示:
当多个矩阵乘以向量时,应该从右向左计算,比如存在三个矩阵:Proj,View,Model    向量:Pos
Proj*View*Model*Pos 代表 向量Pos先进行Model的变换,然后在进行View的变换,最后进行Proj的变换

OpenGL的各个空间的变换矩阵


世界变换矩阵

我一般称世界矩阵为SRT矩阵,SRT分别是"Scale","rotate","translate"三个单词的缩写,也就是世界矩阵由缩放矩阵,旋转矩阵,平移矩阵构成的

(1)缩放矩阵 (ScaleMatrix)

假设在X轴缩放Sx倍,在Y轴缩放Sy倍,在Z轴缩放Sz倍,缩放如下所示:
顶点乘以矩阵的公式如下:

(2)旋转矩阵

在说明旋转矩阵之前,我得说明一下,在右手坐标系如何判断哪个方向为顺时针方向旋转。

先来看下面的图,我们先用右手的拇指朝向Y的正方向,则四指所绕的方向也就是饶Y轴渲染的顺时针方向了,其它轴的顺时针方向同理也就是这样判断。

一,绕X轴顺时针旋转Θ度数


二,绕Y轴顺时针旋转Θ度数

三,绕Z轴顺时针旋转Θ度数


(3)移动矩阵(TranslateMatrix)

假设某个顶点在X轴方向移动dx个单位,Y轴移动dy个单位,在Z轴移动dz个单位

二,相机变换矩阵(ViewMatrix)

在此之前看看UVN相机模型,如图所示:
注视向量N的方向跟相机空间(ViewSpace)的Z轴方向是一致的,而竖直向量V的方向与相机空间(ViewSpace)的Y轴方向是一致的,右向量U的方向与相机空间(ViewSpace)的X轴方向是一致的。
计算UVN向量的公式如下:
这里的“X”为叉乘的意思,并且一样可以通过右手规则(OpenGL世界空间为右手坐标系)得到叉乘向量的方向,也就是用右手从叉乘符号左边那个向量绕向叉乘符号右边的那个向量,拇指所指方向即为叉乘得到向量的方向。
相机矩阵如下所示:
具体推导见文章:推导相机变换矩阵,当然这篇博客对于OpenGL的相机矩阵计算是有些错误的。

三,透视投影矩阵(PerspectiveMatrix)



在推导透视投影矩阵前先看看视截体(Frustum)是怎么样的:
视截体在YZ平面的投影如下面图所示,

n为原点到近截面的距离,f为原点到远截面的距离,α为视截体在YZ平面投影的FOV视角,r为投影平面的宽高比,则透视投影矩阵为:
具体推导参见文章:  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenGL的渲染流水线: 的相关文章

  • 顺序表的C语言实现

    头文件 SeqList h pragma once include
  • 正大国际期货:期货市场到底难在哪儿?

    正大国际金融控股有限公司 简称 正大国际 成立于2019年11月4日 为香港证监会辖下之持牌法团 证监会中央编号 BOP620 从事第2类及第5类受规管活动及期货合约交易及就期货合约提供意见 主要从事商品期货经纪 金融期货经纪业务 致力于提
  • 程序员如何晋级管理层

    在技术领域 程序员们往往是团队中的核心力量 但是 在职场上 技术过硬并不意味着可以永远待在技术岗位上 程序员们很可能在职场中遇到瓶颈 希望获得更高的职位 那么 作为一名程序员 如何晋升到管理层呢 加强团队合作想要晋升管理层 首先需要具备团队
  • hadoop遇到的问题: org.apache.hadoop.ipc.Client: Retrying connect to server异常的解决

    今天在用pig脚本在hadoop运行时 出现如下错误 前提 hadoop能正常启动 pig的参数也正常配置好了 但是运行脚本就出现org apache hadoop ipc Client Retrying connect to server
  • 中国开源走向第二梯队!

    作者 彭慧中 责编 屠敏 出品 CSDN ID CSDNnews 开源已成为迄今为止最先进 最广泛 最活跃的协同创新模式 近年来 中国开源的发展已成为全球最快 中国在国际社区中的贡献度日益提升 在国际开源生态中的影响力日渐增强 在蓬勃发展之
  • 蒙特卡洛量化分析方法

    蒙特卡洛方法主要思想 对于一个随机系统 输出随输入变化是随机的 那么通过重复采样的方法可以得到输出的具体分布 进而再对输出分布形式进行分析 大数定律 当在试验不变的条件下 重复试验多次 随机事件的频率近似于它的概率 将上述思想用于量化分析
  • 常见国内镜像源地址

    常见国内镜像源地址 常见的pip后面的镜像源地址 常见国内镜像源地址 常见的pip后面的镜像源地址 清华大学 https pypi tuna tsinghua edu cn simple 阿里云 http mirrors aliyun co
  • ABAP:ONCHANGEOF的坑

    以下文章来源于ABAPer孙亮 作者孙小亮 ABAPer孙亮 绝对 有用 实用 的ABAP与Excel 原创 干货 不定期发布 可加vx 286503700交流 1 7 背景 由于AT NEW field会判断field和它前面的所有字段
  • 靠营销出圈的拉面说,会是下一个黄太吉吗?

    乘着 宅经济 一人食 的东风 方便速食这一餐饮细分赛道愈发火热 CBNData发布的 2021方便速食行业洞察报告 数据显示 方便速食行业近年来规模增长稳健 预估国内市场规模超2500亿元 而线上市场近一年的增长率更是超过了70 广阔的市场
  • DataGrip汉化设置

    左上角file settings plugins搜chinese如下图搜索结果 选择第二个官方汉化插件安装即可
  • 构造函数的初始化列表

    构造函数初始化列表以一个冒号开始 接着是以逗号分隔的数据成员列表 每个数据成员后面跟一个放在括号中的初始化式 例如 include
  • 【科普】一分钟看懂WINDOWS系统、LINUX系统和苹果操作系统到底有什么区别?

    转自 首先 不管是WINDOWS操作系统 LINUX系统还是苹果操作系统 甚至包括操作系统的鼻祖UNIX操作系统 最早都是用C语言编写的 实际上UNIX操作系统和C语言都是由贝尔实验室的汤普森 Ken Thompson 和丹尼斯 里奇 De
  • RFC文档(中文翻译版本)

    RFC文档官方在线阅读地址 https tools ietf org rfc index 以下是部分中文翻译的文档连接 RFC文档目录 RFC1 主机软件 RFC2 主机软件 RFC3 文档规范 RFC4 网络时间表 RFC6 与 Bob

随机推荐

  • Jmeter导出测试报告

    不管是测接口还是性能 测试完毕之后我们总是希望有所产出 能看的更直观 Jmeter就提供了导出测试报告的功能 一起看看怎么玩 如果细心留意的话 会看到在启动jmeter时 dos窗口会有一行命令 实际上这个命令就阔以帮助我们导出测试报告 我
  • 强制Vue重新渲染组件的最佳方式(亲测完美解决问题)

    有时候 依赖 Vue 响应方式来更新数据是不够的 相反 我们需要手动重新渲染组件来更新数据 或者 我们可能只想抛开当前的DOM 重新开始 那么 如何让Vue以正确的方式重新呈现组件呢 强制 Vue 重新渲染组件的最佳方法是在组件上设置 ke
  • MySQL 使用两种方式清空表,删除表中的所有数据

    假设要删除book表中的所有数据 DELETE FROM book 或 TRUNCATE TABLE book 两者的区别在于 如果book表的主键Id设置为自增的整型 那么 第一次新建一条数据不指定Id Id自动赋值为1 如果使用Dele
  • 刷脸支付项目成本低是创业投资首选

    人工智能技术的改革 还可以说刷脸支付的应用开启了人工智能技术的改革 在以往的人工智能技术的应用而言还不是十分普及 而人工智能技术的在商业化的落地 对于全国店家而言还可以得到广泛的应用 随着各方从业人员的推广以及技术的不断更新 人工智能技术和
  • 打印杨辉三角

    要打印杨辉三角 我们首先要观察杨辉三角中数的规律 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 5 1 如图 我们可以把杨辉三角中前面的空格先省掉 观察数的规律 可以把这些数看做一个二维数组 1 二维数组第一列的
  • 一文了解 Redis

    Redis 简介 Redis Remote Dictionary Server 是一个开源的高性能键值对存储数据库 最初由 Salvatore Sanfilippo 开发 它在内存中存储数据 并提供了持久化功能 可以将数据保存到磁盘中 是一
  • 基于 树莓派4 + STM32H7 构建支持云端应用的嵌入式系统平台 【一】

    基于 树莓派4 STM32H7 构建支持云端应用的嵌入式系统平台 一 一 想法概述 1 想法由来 2 系统架构 3 系统选型 4 开发语言 5 涉及到的框架 6 开发工具 7 功能实现 二 环境搭建 1 MCU开发环境 2 树莓派开发环境
  • 下载试用华秋DFM,让鹏老师恰口饭!

    赚W嘛 就大大方方的 不寒碜 华秋DFM简介 华秋DMF是一个PCB文件分析工具 可以在生产前分析设计好的PCB文件中可能存在的生产风险 从而提高PCB生产及后期贴片 装配的良品率 华秋DMF还集成及PCB下单功能 每个账号没月可免费在华秋
  • VMware虚拟机 Centos7网络配置 ping:www.baidu.com:未知的名称或服务 ping不通

    代码操作 右击打开终端 cd etc sysconfig network scripts ll ll less 看到第一行 rw r r 1 root root 279 11月 8 01 35 ifcfg ens33 vim ifcfg e
  • 【论文阅读】Ultrafast Local Outlier Detection from a Data Stream with Stationary Region Skipping

    论文阅读 Ultrafast Local Outlier Detection from a Data Stream with Stationary Region Skipping 论文来源 SIGKDD 2020 原文地址 https dl
  • docker部署redis实例

    docker部署redis实例 前言 本文只适合二次创建redis实例 在 1 电脑已经有虚拟机 2 虚拟机之前已经配置好了docker 3 虚拟机docker之前已经拉取过redis镜像 pull 4 通过上面第3步的镜像成功跑起过red
  • visual studio code搭建opencv环境

    visual studio code搭建OpenCV环境 前言 资源下载 软件安装与配置环境变量 安装 配置环境变量 生成MakeFiles 编译opencv vscode配置 参考链接 前言 前段时间我想学习opencv 由于我一直都习惯
  • 在windows下安装opencv+python

    上面是我的微信和QQ群 欢迎新朋友的加入 先安装好python 安装 opencv pip install opencv python 查看版本 import cv2 cv2 version 测试
  • windows10下面安装alphapose解决 ImportError : cannot import name ‘deform_conv_cuda‘

    0 环境 conda create n alphapose python 3 6 source activate alphapose conda install pytorch 1 1 0 torchvision 0 3 0 cudatoo
  • 数据结构-选择排序以及对它的优化

    选择排序 八大排序算法之一的选择排序 它的原理是比较容易理解的 每一趟遍历都在后面元素中找到最小的元素 升序 记录它的下标 一趟走完后 如果记录的元素下标不等于这组元素第一个元素则进行交换 我们可以配合图来看 还另外加了升序和降序的仿函数
  • AI教学赋能计划(大模型特辑)2023秋季学期启动申请!

    AI教学赋能计划是由百度飞桨发起 面向高校提供产教融合人才培养方案 一站式助力高校复合型人才培养 截至目前已经培养5200名AI专业师资 助力484所高校开设人工智能与AI X特色课程 2023年随着文心一言等预训练大语言模型发展 大模型成
  • 【状态估计】基于线性卡尔曼滤波器和粒子滤波器无人机估计地形高度(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 本文模拟了安装在无人机中的距离传感器从地形
  • 一步真实解决AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘

    你是不是在Pycharm等编译器和Colab等服务器上运行yolov5的detect py出现下面的这个问题 那么我们跟着错误去上面的提示信息找方法 可以发现是关于 Upsample 和 recompute scale factor 相关的
  • Unity环境下RTMP推流+RTMP播放低延迟解决方案

    在本文之前 我们发布了Unity环境下的RTMP推流 Windows平台 Android平台 和RTMP RTSP拉流 Windows平台 Android平台 iOS平台 低延迟的解决方案 今天做个整体汇总 权当抛砖引玉 1 Unity环境
  • OpenGL的渲染流水线:

    OpenGL的渲染流水线 OpenGL的坐标系 在3D图形学里 OpenGL为右手坐标系 准确来说 OpenGL的世界空间和相机空间是右手坐标系 随便提一下 D3D11为左手坐标系 1 右手坐标系 2 左手坐标系 OpenGL的矩阵和向量结