计算机图形学入门06:视口变换

        在前面的内容中,在MVP变换(模型变换,视图变换,投影变换)完后,所有的物体位置都变换到了[-1, 1]³的标准立方体里,下一步要把物体绘制到屏幕(Screen)上。

1.什么是屏幕?

        对于图形学来说把屏幕抽象的认为是一个二维数组,数组中的每一个元素是一个像素(Pixel),屏幕是一个典型的光栅(Raster)成像设备光栅化(Rasterize)是指把东西画在屏幕上的过程。

像素(Pixel)
        在屏幕上排列的最小单位,在本文中,像素可以简单理解为一块统一颜色的小方块,颜色有红、绿、蓝混合而成。现实中,屏幕的大小用分辨率表示,例如一个屏幕的分辨率为1920x1080,那么它就有1920x1080个像素排列在屏幕上。

屏幕空间

        相当于在屏幕上建立一个坐标系,如上图。任何屏幕空间的像素点都可以用(x,y)来表示,其中x,y都是整数。

        假设x为width,y为height,那么像素的索引是从(0,0)(width-1,height-1)。像素(x,y)的中心点是(x+0.5,y+0.5)。而整个屏幕覆盖范围是(0,0)(width,height)

2.视口变换

        现在已经知道了什么是屏幕,那么要将[-1, 1]³的标准立方体变换到从[0, width]x[0, height]的屏幕空间上,这个叫做视口(Viewport)变换。这里先不考虑z,那么就是将[-1,1]²的标准立方体变换到屏幕上如下图所示:

        可以发现,视口变换需要经过两个步骤,首先进行缩放变换,将标准立方体x轴和y轴长度分别缩放到width和height,由于-1到1的距离是2,所以缩放长度分别为width/2和height/2。然后是进行平移变换,将标准立方体的中点从原点平移到屏幕中心(width/2,height/2)。

        可得出视口变换矩阵如下:

3.下一步是?

        视口变换完成后,物体到屏幕的所有变换都完成了,那么我们要把这些结果信息真正的变成图,也就是说变成屏幕上的像素,这里就是下一章要讲的光栅化

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

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

相关文章

【微信小程序】初识小程序

项目结构 项目基本组成结构 页面基础组成结构 JSON 配置文件 App.json app.json是当前小程序的全局配置,包括了小程序的所有页面路径、窗口外观、界面表现、底部tab等。 在 pages 中加入路径,保存后,开发者工具可以自动帮我们创建对应的页…

VMware虚拟机关机报错处理办法

VMware虚拟机关机报错处理办法 ​ 在 VMware ESXi 下面强制关闭一个沒有反应的 VM 虚拟机的方法, 一般正常都是使用 vSphere Client 去控制 VM 虚拟机的电源开关, 但是有时会发生即使用里面的 Power Off 按钮但是还是无法关闭我的 VM 虚拟机, 而且最终会出现一串 错误信息「An…

如何使用 Python 和 Selenium 解决 Cloudflare 验证码

你知道吗?大约 20% 你需要抓取的网站使用 Cloudflare,这是一个强大且不断崛起的反机器人保护系统,可以轻松击败你的努力。如果你正在为 Cloudflare 验证码失败而苦恼,你并不孤单。在每一秒都很重要的世界里,许多人因为…

trace32 显示用户进程用户态调用栈

在只加载了linux vmlinux符号表的情况下,trace32 只能显示内核态的调用栈函数信息,无法显示用户态调用栈的函数信息: 查看进程maps 确认地址0x40616C为进程/bin/box的虚拟地址;而0xFFFF904E12FC为/lib/libc-2.30.so的地址&#x…

低代码开发平台一般都有哪些功能和模块?

在当今快速变化的数字化时代,企业对于高效、灵活且经济的软件开发解决方案的需求愈发迫切。低代码开发平台应运而生,成为众多企业实现数字化转型的首选工具。本文将详细探讨低代码开发平台一般具备的主要功能和模块,以及它们如何助力企业提升…

微软云计算[3]之Windows Azure AppFabric

Windows Azure AppFabric AppFabric概述AppFabric关键技术服务总线访问控制高速缓存 AppFabric概述 AppFabric为本地应用和云中应用提供了分布式的基础架构服务 用户本地应用与云应用之间进行安全联接和信息传递 云应用和现有应用或服务之间的连接及跨语言、跨平台、跨不同标…

GLM-4本地部署的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

endnote IEEEtran 参考文献 输出Latex

文章目录 参考文献Latex1. 新建格式1.1 新建BibTeX Export样式文件1.2 保存自定义文献格式 2 修改2.1 修改Journal Names 为简写2.2 修改Author Lists2.3 修改 模版 Templates 3. 特殊字符作者名字标题 4. 增加期刊简写4.1 删除已有简写的Term Lists 4.2 下载最新的Term LIsts4…

软件管理及部分命令

sed命令 格式: sed [选项] 操作 目标文件 选项: -i:修改原始文件【如果不加-i,那就是仅仅修改内存中的文件副本】 案例:将1.txt中的tom修改成jerry。 sed -i "s/tom/jerry/g" 1.txt 将1…

HarmonyOS(30) @LocalStorageLink使用指南

这里写目录标题 LocalStorageLink。使用示例参考资料 LocalStorageLink。 LocalStorage是页面级的UI状态存储,通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。而LocalStorageLink则是LocalStorage 相关装饰器之一。LocalStorageLink装饰的变量…

windows10 安装子linux系统(WSL安装方式)

在 windows 10 平台采用了WSL安装方式安装linux子系统 1 查找自己想要安装的linux子系统 wsl --list --online 2 在线安装 个人用Debian比较多,这里选择Debian,如下图: wsl --install -d Debian 安装完成,如下: 相关…

电脑显示找不到steam_api.dll,无法继续执行代码的详细解决办法

电脑显示找不到steam_api.dll,无法继续执行代码?其实会造成这种原因,注意是由于操作不当或者是中了病毒而导致的,我们想要解决steam_api.dll的丢失还是比较简单的,目前有多种的steam_api.dll修复方法,今天我们就来详细…

WordPress电脑版+手机版自动识别切换主题插件优化版

下载地址:WordPress电脑版手机版自动识别切换主题插件优化版 插件介绍: 电脑访问自动显示电脑版 手机访问自动显示手机版

C盘清理攻略!!!详细步骤

c盘爆满怎么清,往下看 一、清缓存文件键盘winr打开运行窗口,输入:%temp% 二、清理安装包文件键盘winr打开运行窗口,输入:softwaredistribution 三、清理软件解压临时文件键盘winr打开运行窗口,输入&#xf…

3389远程桌面,如何进行3389远程桌面的连接操作

随着信息技术的快速发展,远程桌面连接技术逐渐成为企业、教育以及个人用户进行远程办公、技术支持以及协作交流的重要工具。其中,3389远程桌面因其稳定性和易用性而备受青睐。本文将从专业角度出发,为您详细介绍如何进行3389远程桌面的连接操…

将小爱音箱接入 ChatGPT 和豆包ai改造成专属语音助手

这个GitHub项目,mi-gpt,旨在将小爱音箱和米家设备与ChatGPT和豆包集成,有效地将这些设备转变为个性化语音助手。以下是对其功能和设置的详细分析: 主要特点 角色扮演:该项目允许小爱适应不同的角色,如伴侣…

何为云防护?有何作用

云防护又称云防御。随着Internet互联网络带宽的增加和多种DDOS 黑客工具的不断发布,云计算越演越热,DDOS拒绝服务攻击的实施越来越容易,DDOS攻击事件正在成上升趋势。出于商业竞争、打击报复和网络敲诈等多种因素,导致很多IDC 托管…

2025QS世界大学排行榜最新完整版

北京时间6月5日凌晨4点,QS官网发布了备受瞩目的2025年世界大学排名,本次排名共涵盖了1500所顶尖院校,让人们期待已久的排名榜单一览无遗,展现了全球高等教育的新格局。根据上大学网(www.sdaxue.com)统计&am…

OrangePi 安装 CANN 套件及体验 AI 应用

CANN 环境安装(桌面端跳过) CANN 环境存在于下载页面的官方工具中,点击下载即可进入下载页面。 CANN 安装包就在倒数第二项,下载后传到开发板上。 给 CANN 安装包赋予运行权限并运行即可。 chmod x Ascend-cann-toolkit_7.0.0_l…

SQL学习小记(五)解决python连接Oracle数据库出现的问题

python运行时出现错误DPI-1047: Cannot locate a 64-bit Oracle Client library: “The specified module could not be 解决python连接Oracle数据库出现的问题 1. 配置本地Oracle的path2. python10的详细安装过程2.1. python10下载2.2. python10安装2.3.额外操作 3. python 安…