聚集网(jujiwang.com) - 收录免费分类目录信息软文发布网址提交
免费加入

光栅化入门:掌握数字图像处理的基础 (光栅化流程)

文章编号:11823时间:2024-10-01人气:


光栅化入门

什么是光栅化?

掌握数字图像处理的基础

光栅化是将矢量图形或文本转换为像素阵列的过程。像素阵列是一组有颜色值的点,共同形成图像。

光栅化流程

光栅化流程分为以下步骤:

  1. 预处理:修复输入图像中的任何缺陷或噪点。
  2. 采样:将输入图像划分为更小的区域,称为像素。每个像素指定一个颜色值。
  3. 量化:将采样得到的颜色值近似为一系列有限的离散颜色值。
  4. 绘制:将量化后的像素值绘制到输出设备上,例如显示器或打印机。

采样

采样是光栅化过程的关键步骤。它决定了输出图像的分辨率和质量。

有两种主要的采样技术:

  • 均匀采样:将输入图像均匀地划分为像素。
  • 非均匀采样:根据输入图像的属性,以不同的速率对不同区域进行采样。

非均匀采样通常用于提高图像质量,特别是对于包含细微细节或高频成分的图像。

量化

量化是将采样得到的连续颜色值近似为一系列有限的离散颜色值的过程。

量化会导致精度损失,因为原始图像中一些细微的颜色差别可能会丢失。

有两种主要的量化技术:

  • 均匀量化:将颜色范围均匀地划分为离散值。
  • 非均匀量化:根据人类视觉系统对不同颜色敏感性的差异,以不同的精度

简化渲染流程的7 个强大的软件

简化渲染过程的软件正在将模型转换为计算机内的 2D 或 3D 图片。 渲染引擎通过处理不同的数据(例如纹理、颜色或其他一些专门特征)来创建这些图像。 此外,您在模拟、动画或视频游戏中看到的所有内容都是这些图像的混搭。 采用光栅化的实时渲染引擎和使用“光线追踪”概念的生产质量渲染引擎是两种类型的3D 渲染引擎。 顾名思义,光线追踪会跟踪光线从模型反射并返回虚拟相机的情况。 另一方面,光栅化是将矢量图形转换为光栅图像的快速过程。 光栅图片只不过是作为图像出现在屏幕上的离散像素的集合。 有哪些可以简化渲染过程的最佳软件?Qlone、Shapr3D、Onshape、Prisma3D、Sculptura、Putty3D和渲云渲染插件。 Qlone是一款流行的 3D 扫描程序,不需要激光雷达即可运行。 即使您没有配备激光雷达传感器的最新 iPad 或 iPhone,该程序也可让您在3D 扫描过程中实时记录深度信息。 扫描3D 模型后,您可以对其进行编辑、渲染并以标准 3D 格式导出。 企业和个人使用该软件生成现实世界事物的逼真 3D 表示。 Qlone 还提供独一无二的快速入门指南,解释如何将 3D 模型纳入您的网站并提高整体参与度。 它还包括用于修改 3D 对象并在增强现实中查看它们的工具。 虽然免费版缺少这种 AR 视角和 4K 扫描,但您可以一次性付费升级到专业版。 值得注意的是,Qlone 还兼容 MacOS(Monterey 及更高版本)。 Shapr3D 允许您使用 iPad 和 Apple Pencil 随时随地创建3D 模型。 由于 Shapr3D 由运行 SolidWorks 的同一引擎驱动,因此渲染图形并将其导入桌面变得轻而易举。 该应用程序的用户友好界面使其成为 CAD 软件新手的绝佳选择。 在 iPad 上使用 Apple Pencil 绘制 3D 模型就像用铅笔在纸上绘图一样简单。 其高分辨率渲染将使您能够以生产质量查看您的设计,并且它也可以离线工作。 Shapr3D 还提供有用的支持系统和活跃的论坛,以获取问题的答案并了解新功能。 Onshape 是一款基于云的 CAD 软件,带有适用于 Android 和 iOS 智能手机的配套应用程序。 您可以直接在移动设备上使用完整版本,因为它在网络浏览器上运行。 该应用程序允许您在任何地方处理项目,只要您有有效的互联网连接。 iPad 版 Onshape 还可以与 Apple Pencil 配合使用,非常适合实时绘制草图和渲染。 Prisma3D 允许您直接从 Android 设备创建 3D 模型并制作动画。 您所需要的只是一些基本的绑定和关键帧技术,您的 3D 角色就可以制作一些精彩的动画。 通过使 3D 环境和操作 3D 模型的能力可以在任何地方访问,可以简化各个级别的艺术家的渲染过程。 Prisma3D 可实现高达 4K 的渲染,但这需要高端移动设备或平板电脑处理器。 然而,大多数智能手机应该能够快速渲染高清素材。 它还支持导入和导出主要的3D 文件格式,包括 OBJ。 Sculptura 是一款具有简单雕刻工具并能生成照片级真实渲染效果的应用程序的有力竞争者。 它与 iPad 兼容,您可以快速导入 3D 模型以开始雕刻。 如果您喜欢随时随地进行 3D 工作,可以通过将 Sculptura 集成到您的工作流程中来简化渲染过程。 它还具有 OBJ 和 STL 导出选项,您可以将工作快速传输到您的 PC。 Putty3D 是一款强大的 3D 雕刻程序,可利用集成图形处理器 (IGP) 创建无缝的用户体验。 由于它同时使用 CPU 和 GPU,因此渲染速度更快、质量更高。 较新的 iPad 拥有强大的 CPU,可以在更短的时间内实现更好的渲染,这一事实也许是不言而喻的。 这种移动工作的能力将大大简化艺术家的渲染过程。 渲云渲染插件 3D项目渲染慢、渲染卡顿、渲染崩溃,本地硬件配置不够,想要加速渲染,在不增加额外的硬件成本投入的情况下,最好的解决方式是使用渲云云渲染,在云端批量渲染,批量出结果,maya可分块渲染,享受高配置、高内存、高性能服务器带来极致的渲染速度,节省渲染时间,提高工作效率。 渲云支持的软件囊括D5、Unreal Engine、3ds Max、Maya、C4D、Houdini、Clarisse、keyshot、katana、Blender、NUKE、VRAY Standalone、Vred、AE等,基本涵盖业内CG人会使用到的各类常规软件,目前还在不断增加,满足不同用户的软件差异性需求。 简化渲染过程的软件能帮助艺术家提高生产力、创造力和成本效益。 通过采用这些简化方法,艺术家可以专注于他们的艺术愿景,而不会受到技术障碍的困扰。 简化渲染的好处包括更快的项目完成、资源优化、更愉快的创作体验、即时反馈、创意探索、更好的协作和客户互动。

栅格化的基本实现方法

最基础的栅格化算法将多边形表示的三维场景渲染到二维表面。 多边形由三角形的集合表示,三角形由三维空间中的三个顶点表示。 在最简单的实现形式中,栅格化工具将顶点数据映射到观察者显示器上对应的二维坐标点,然后对变换出的二维三角形进行合适的填充。 一旦三角形顶点转换到正确的二维位置之后,这些位置可能位于观察窗口之外,也可能位于屏幕之内。 裁剪就是对三角形进行处理以适合显示区域的过程。 最常用的技术是Sutherland-Hodgeman裁剪算法。 在这种方法中,每次测试每个图像平面的四条边,对于每个边测试每个待渲染的点。 如果该点位于边界之外,就剔除该点。 对于与图像平的面边相交的三角形边,即边的一个顶点位于图像内部一个位于外部,那么就在交叉点插入一个点并且移除外部的点。 传统的栅格化过程的最后一步就是填充图像平面中的二维三角形,这个过程就是扫描变换。 第一个需要考虑的问题就是是否需要绘制给定的像素。 一个需要渲染的像素必须位于三角形内部、必须未被裁掉,并且必须未被其它像素遮挡。 有许多算法可以用于在三角形内进行填充,其中最流行的方法是扫描线算法。 由于很难确定栅格化引擎是否会从前到后绘制所有像素,因此必须要有一些方法来确保离观察者较近的像素不会被较远的像素所覆盖。 最为常用的一种方法是深度缓存,深度缓存是一个与图像平面对应的保存每个像素深度的二维数组。 每个像素进行绘制的时候都要更新深度缓存中的深度值,每个新像素在绘制之前都要检查深度缓存中的深度值,距离观察者较近的像素就会绘制,而距离较远的都被舍弃。 为了确定像素颜色,需要进行纹理或者浓淡效果计算。 纹理图是用于定义三角形显示外观的位图。 每个三角形顶点除了位置坐标之外都与纹理以及二维纹理坐标 (u,v) 发生关联。 每次渲染三角形中的像素的时候,都必须在纹理中找到对应的纹素,这是根据在屏幕上像素与顶点的距离在与纹理坐标相关联的三角形顶点之间插值完成的。 在透视投影中,插值是在根据顶点深度分开的纹理坐标上进行的,这样做就可以避免透视缩减(perspective foreshortening)问题。 在确定像素最终颜色之前,必须根据场景中的所有光源计算像素上的光照。 在场景中通常有三种类型的光源。 定向光是在场景中按照一个固定方向传输并且强度保持不变的光。 在现实生活中,由于太阳距离遥远所以在地球上的观察者看来是平行光线并且其衰减微乎其微,所以太阳光可以看作是定向光。 点光源是从空间中明确位置向所有方向发射光线的光源。 在远距离的物体上的入射光线会有衰减。 最后一种是聚光灯,如同现实生活中的聚光灯一样,它有一个明确的空间位置、方向以及光锥的角度。 另外,经常在光照计算完成之后添加一个环境光值以补偿光栅化无法正确计算的全局照明效果。 有许多可以用于光栅化的浓淡算法。 所有的浓淡处理算法都必须考虑与光源的距离以及遮蔽物体法向量与光照入射角。 最快的算法让三角形中的所有像素使用同样的亮度,但是这种方法无法生成平滑效果的表面。 另外也可以单独计算顶点的亮度,然后绘制内部像素的时候对顶点亮度进行插值。 速度最慢也最为真实的实现方法是单独计算每点的亮度。 常用的浓淡模型有 Gouraud shading 和 Phong shading。

计算机图形学-Computer Graphics(1)

计算机图形学是利用计算机合成和操作视觉信息的学科。 它的应用领域广泛,包括游戏、电影、虚拟现实(VR)、增强现实(AR)、用户界面(GUI)、数字照片、地图绘制、3D打印、建筑设计等。 在计算机图形学中,涉及到的知识多而复杂。 首先,要解决的是如何建模,例如绘制一个立方体。 假设立方体长宽高为2*2*2,中心在三维坐标轴中心(0,0,0)。 立方体的八个顶点坐标分别为:A(1,1,1),B(-1,1,1),C(1,-1,1),D(-1,-1,1),E(1,1,-1),F(-1,1,-1),G(1,-1,-1),H(-1,-1,-1)。 接下来,需要解决的是如何将三维空间中的立方体投影到二维平面上,即用数字描述在屏幕上显示立方体的过程。 投影的基本策略包括将三维顶点投影成二维平面上的点,然后将这些点连接起来。 透视投影是基于“近大远小”的原理,通过小孔成像原理,将三维物体显示在二维平面上。 具体公式为:v = y/z, u = x/z,其中x, y, z指的是顶点到相机小孔C的水平、竖直和横向距离,而不是顶点在三维空间中的坐标。 接着,我们需要了解像素(Pixel)的概念。 一个像素由红绿蓝三原色和色彩空间(透明度)信息组成,以32位(相当于一个浮点数)存储,每个值范围为0-255。 显示屏由许多像素组成,1920*1080分辨率表示横向1080个点,纵向1920个点,共约200万个点。 显示像素的方法有LCD和DMD等。 光栅化是指将连续的物体(如线、多边形)用像素网格表示。 对于线段的光栅化,可以采用Diamond Rule,即只在直线穿过正方形中间的菱形区域时点亮整个正方形像素。 通过求解线段的斜率,可以简化光栅化过程。 通过建模和光栅化,我们可以在屏幕上显示3D物体。 下一节将学习如何绘制更复杂的平面图形,以及处理锯齿问题。 理解3D物体的建模和光栅化过程是计算机图形学的基础,为后续学习更复杂的表面描绘、光照模拟、材质属性和物体运动做好准备。 学习计算机图形学是一个循序渐进的过程,从简单的二维绘图到复杂的三维渲染,涵盖了数学、几何、计算机视觉等多个领域。 通过不断实践和学习,可以逐步掌握这一领域的知识和技能。

《计算机图形学基础》之图像的光栅化

输出设备主要分两种,一种是 显示屏类的,一种是 打印机类的。 显示屏也也分为两种:

打印机不重要,当科普看看~ 分为两种:

打印机的分辨率不好确定,因为跟纸的移动速度有关,对热敏打印机这类能打印连续颜色的设备来说,一般的标准是打印头上每英寸多少像素(pixels per inch / ppi)。 对于喷墨式这种不能连续的设备来说,一般的标准是每英寸多少个点(dots per inch / dpi)。

所有的不是通过电脑计算出来的图像,都需要先用光栅化输入设备获取,一般是 数码相机和 扫描仪 。 如果一个相机的分辨率是 3000*2000,那么一般称他为 600 万像素(6 MP)。 可以独立测量红绿蓝的相机要比只有一个马赛克传感器的好(mosaic sensor)。 对于扫描仪而已,指标一般跟连续性打印机一样,每英寸多少像素(ppi)。

一个像素是一个采样点,对于数码相机来说,一个像素就是这个格子周围的光的平均,对于输出设备来说也是,这个像素只是代表这一小块方格的平均,比如说,一个屏幕只有一个像素,用它来显示一张图片,只能是纯色,纯色不能代表这张图片,只能代表一个平均值。 确定像素矩阵的坐标是很重要的,约定使用下面的方式:

我们把显示器关闭当成 0,把显示器打开当成 1,中间 0.5 是灰色。 需要明确一点,显示器对于输入的数值和显示出的强度并不是线性对应的,比如说,分别输入 0,0.5,1,那么显示器输出的强度有可能是 0,0.25,1。 对于这种非线性,显示器通常会有一个伽马值来表述。 公示为:

比如说,输入值为 0.5,伽马值为 2,那么输出强度为最大强度的 1/4。 输入强度为 0 的时候就是 0,1 的时候就是最大强度。 可以通过一些方法来确定某块屏幕的伽马值,我们假设已经知道了。 这样就可以对输入进行 伽马校正 ,也就是使得输入值为 0.5 时,输出强度也恰好是黑与白的一半。 也就是把输入和输出变成一个近似线性的对应关系。 另一个需要注意的是,屏幕的显示颜色范围都是固定大小的,一般是 0-255,也就是 8-bit 的存储器。

RGB 是加色模式,全部混合是白色,可以理解为是光;青品黄是减色模式,全部混合是黑色,可以理解为是颜料;我们不需要关心青品黄。 一般都是 24-bit 的颜色系统,也就是 8bit * 3,每个分量有 255 个等级。

对于不透明的物体,前景会直接覆盖后景;对于半透明的物体,一般会将前景和后景进行混合,一般描述一个颜色都是 RGBA,这里的 A 是指 α,指的就是与后景的混合程度。公式为:

可以看出 0 的时候全部都是后景色,1 的时候全部都是前景色。

(注意并不只有这一种混合模式,你看 ps 里面图层的叠加方式,正常/正片叠底/线性减淡之类的)

大部分图像都是使用 8-bit 来存储每个通道,这样的话一个 100 万像素的图片大概就是 3M 左右。 为了降低存储空间,有时会将图片进行压缩,有的压缩是有损压缩,不可逆的,有的是无损压缩。 常见的图像存储格式有:

如何利用performance进行性能优化

Performance可以记录站点在运行过程中的性能数据,有了这些性能数据,就可以回放整个页面的执行过程,这样就方便我们来定位和诊断每个时间段内页面的运行情况,从而有效的找出页面的性能瓶颈。

配置Performance

各种配置及说明如图所示:

Performance不仅可以录制加载阶段的性能数据,还可以录制交互阶段,不过交互阶段的录制需要手动停止录制过程。

观察下图的报告页,我们可以将它分为三个主要的部分,分别为概览面板、性能指标面板和详情面板。

在概览面板中,Performance就会将几个关键指标,诸如页面帧速(FPS)、CPU资源消耗、网络请求流量、V8内存使用量(堆内存)等,按照时间顺序做成图表的形式展现出来,可以参看上图。

如果FPS图表上出现了红色块,那么就表示红色块附近渲染出一帧所需时间过久,帧的渲染时间过久,就有可能导致页面卡顿。

如果CPU图形占用面积太大,表示CPU使用率就越高,那么就有可能因为某个JavaScript占用太多的主线程时间,从而影响其他任务的执行。

除了以上指标以外,概览面板还展示加载过程中的几个关键时间节点,如FP、LCP、DOMContentLoaded、Onload等事件产生的时间点。

Main指标

在性能面板中,记录了非常多的性能指标项,比如Main指标记录渲染主线程的任务执行过程,Compositor指标记录了合成线程的任务执行过程,GPU指标记录了GPU进程主线程的任务执行过程。 有了这些详细的性能数据,就可以帮助我们轻松地定位到页面的性能问题。

简而言之,我们通过概览面板来定位问题的时间节点,然后再使用性能面板分析该时间节点内的性能数据。 具体地讲,比如概览面板中的FPS图表中出现了红色块,那么我们点击该红色块,性能面板就定位到该红色块的时间节点内了。

因为浏览器的渲染机制过于复杂,所以渲染模块在执行渲染的过程中会被划分为很多子阶段,输入的HTML数据经过这些子阶段,最后输出屏幕上的像素,我们把这样的一个处理流程叫做渲染流水线。 一条完整的渲染流水线包括了解析HTML文件生成DOM、解析CSS生成CSSOM、执行JavaScript、样式计算、构造布局树、准备绘制列表、光栅化、合成、显示等一系列操作。

渲染流水线主要是在渲染进程中执行的,在执行渲染流水线的过程中,渲染进程又需要网络进程、浏览器进程、GPU等进程配合,才能完成如此复杂的任务。 另外在渲染进程内部,又有很多线程来相互配合。 具体的工作方式你可以参考下图:

观察上图,一段段横条代表执行一个个任务,长度越长,花费的时间越多;竖向代表该任务的执行记录。 我们知道主线程上跑了特别多的任务,诸如渲染流水线的大部分流程,JavaScript执行、V8的垃圾回收、定时器设置的回调任务等等,因此Main指标的内容非常多,而且非常重要,所以我们在使用Perofrmance的时候,大部分时间都是在分析Main指标。

任务vs过程

渲染进程中维护了消息队列,如果通过setTimeout设置的回调函数,通过鼠标点击的消息事件,都会以任务的形式添加消息队列中,然后任务调度器会按照一定规则从消息队列中取出合适的任务,并让其在渲染主线程上执行。

Main指标就记录渲染主线上所执行的全部任务,以及每个任务的详细执行过程。

观察上图,图上方有很多一段一段灰色横条,每个灰色横条就对应了一个任务,灰色长条的长度对应了任务的执行时长。 通常,渲染主线程上的任务都是比较复杂的,如果只单纯记录任务执行的时长,那么依然很难定位问题,因此,还需要将任务执行过程中的一些关键的细节记录下来,这些细节就是任务的过程,灰线下面的横条就是一个个过程,同样这些横条的长度就代表这些过程执行的时长。

直观地理解,你可以把任务看成是一个Task函数,在执行Task函数的过程中,它会调用一系列的子函数,这些子函数就是我们所提到的过程。为了让你更好地理解,我们来分析下面这个任务的图形:

观察上面这个任务记录的图形,你可以把该图形看成是下面Task函数的执行过程:

function?A(){????A1()????A2()}function?Task(){????A()????B()}Task()分析页面加载过程

结合Main指标来分析页面的加载过程。先来分析一个简单的页面,代码如下所示:

????Main????????????????
????
????
????

可以看出,它只是包含了一段CSS样式和一段JavaScript内嵌代码,其中在JavaScript中还执行了DOM操作了,我们就结合这段代码来分析页面的加载流程。

首先生成报告页,再观察报告页中的Main指标,由于阅读实际指标比较费劲,所以先手动绘制了一些关键的任务和其执行过程,如下图所示:

通过上面的图形我们可以看出,加载过程主要分为三个阶段,它们分别是:

导航阶段,该阶段主要是从网络进程接收HTML响应头和HTML响应体。

解析HTML数据阶段,该阶段主要是将接收到的HTML数据转换为DOM和CSSOM。

生成可显示的位图阶段,该阶段主要是利用DOM和CSSOM,经过计算布局、生成层树(LayerTree)、生成绘制列表(Paint)、完成合成等操作,生成最终的图片。

那么接下来,我就按照这三个步骤来介绍如何解读Main指标上的数据。

导航阶段

当你点击了Performance上的重新录制按钮之后,浏览器进程会通知网络进程去请求对应的URL资源;一旦网络进程从服务器接收到URL的响应头,便立即判断该响应头中的content-type字段是否属于text/html类型;如果是,那么浏览器进程会让当前的页面执行退出前的清理操作,比如执行JavaScript中的beforunload事件,清理操作执行结束之后就准备显示新页面了,这包括了解析、布局、合成、显示等一系列操作。

当你点击重新加载按钮后,当前的页面会执行上图中的这个任务:

该任务的第一个子过程就是Sendrequest,该过程表示网络请求已被发送。 然后该任务进入了等待状态。

接着由网络进程负责下载资源,当接收到响应头的时候,该任务便执行ReceiveRespone过程,该过程表示接收到HTTP的响应头了。

接着执行DOM事件:pagehide、visibilitychange和unload等事件,如果你注册了这些事件的回调函数,那么这些回调函数会依次在该任务中被调用。

这些事件被处理完成之后,那么接下来就接收HTML数据了,这体现在了ReciveData过程,ReciveData过程表示请求的数据已被接收,如果HTML数据过多,会存在多个ReceiveData过程。

等到所有的数据都接收完成之后,渲染进程会触发另外一个任务,该任务主要执行Finishload过程,该过程表示网络请求已经完成。

解析HTML数据阶段

这个阶段的主要任务就是通过解析HTML数据、解析CSS数据、执行JavaScript来生成DOM和CSSOM。那么继续来分析这个阶段的图形,看看它到底是怎么执行的?可以观看下图:

观察上图这个图形,可以看出,其中一个主要的过程是HTMLParser,顾名思义,这个过程是用来解析HTML文件,解析的就是上个阶段接收到的HTML数据。

在ParserHTML的过程中,如果解析到了script标签,那么便进入了脚本执行过程,也就是图中的EvaluteScript。

要执行一段脚本我们需要首先编译该脚本,于是在EvaluteScript过程中,先进入了脚本编译过程,也就是图中的ComplieScript。 脚本编译好之后,就进入程序执行过程,执行全局代码时,V8会先构造一个anonymous过程,在执行anonymous过程中,会调用setNewArea过程,setNewArea过程中又调用了createElement,由于之后调用了方法,该方法会触发DOM内容的修改,所以又强制执行了ParserHTML过程生成的新的DOM。

DOM生成完成之后,会触发相关的DOM事件,比如典型的DOMContentLoaded,还有readyStateChanged。

生成可显示位图阶段

生成了DOM和CSSOM之后,就进入了第三个阶段:生成页面上的位图。通常这需要经历布局(Layout)、分层、绘制、合成等一系列操作,同样,将第三个阶段的流程也放大了,如下图所示:

结合上图,我们可以发现,在生成完了DOM和CSSOM之后,渲染主线程首先执行了一些DOM事件,诸如readyStateChange、load、pageshow。 具体地讲,如果你使用JavaScript监听了这些事件,那么这些监听的函数会被渲染主线程依次调用。

接下来就正式进入显示流程了,大致过程如下所示。

首先执行布局,这个过程对应图中的Layout。

光栅化流程

然后更新层树(LayerTree),这个过程对应图中的UpdateLayerTree。

有了层树之后,就需要为层树中的每一层准备绘制列表了,这个过程就称为Paint。

准备每层的绘制列表之后,就需要利用绘制列表来生成相应图层的位图了,这个过程对应图中的CompositeLayers。

走到了CompositeLayers这步,主线程的任务就完成了,接下来主线程会将合成的任务完全教给合成线程来执行,下面是具体的过程,你也可以对照着Composite、Raster和GPU这三个指标来分析,参考下图:

首先主线程执行到CompositeLayers过程之后,便会将绘制列表等信息提交给合成线程,合成线程的执行记录你可以通过Compositor指标来查看。

合成线程维护了一个Raster线程池,线程池中的每个线程称为Rasterize,用来执行光栅化操作,对应的任务就是RasterizePaint。

当然光栅化操作并不是在Rasterize线程中直接执行的,而是在GPU进程中执行的,因此Rasterize线程需要和GPU线程保持通信。

然后GPU生成图像,最终这些图层会被提交给浏览器进程,浏览器进程将其合成并最终显示在页面上。

本文解答了个人一个长期困扰的问题:在某些情况下,比如网速比较慢或者页面内容很多的时候,页面是一点一点的显示出来的,原本以为是网络数据是加载一点就渲染一点,其实不是的,数据在导航阶段就已经全部获取回来了。 之所以会慢慢渲染出来,是因为浏览器的显示频率是60hz,也就是16.67ms就刷新下浏览器,但是在16.67ms内,渲染流水线可能只进行到一半,但是这个时候也要把渲染一半的画面显示出来,所以就会看到页面是一点一点的绘制出来的。

原文:



相关标签: 掌握数字图像处理的基础光栅化流程光栅化入门

上一篇:光栅化与数字摄影捕捉现实的像素化世界光栅

下一篇:光栅化在数字艺术中的作用像素之舞光栅输出

内容声明:

1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违法信息,如您发现违法内容,请联系我们进行举报处理!
4、本文地址:http://www.jujiwang.com/article/b7ee2b5d39227f6a15a0.html,复制请保留版权链接!


随机文章
在 Windows 7 中使用 CrackVS2008 创建并管理解决方案的最佳实践 (在windows10中下列正确的文件名是)

在 Windows 7 中使用 CrackVS2008 创建并管理解决方案的最佳实践 (在windows10中下列正确的文件名是)

在Windows10中使用CrackVS2008创建和管理解决方案的最佳实践引言CrackVS2008是一款功能强大的工具,用于在Windows中创建和管理VisualStudio解决方案,遵循最佳实践可以帮助您优化工作流程,提高生产力和确保代码库的质量,本文将探讨在Windows10中使用CrackVS2008创建和管理解决方案的最...。

最新资讯 2024-10-01 12:12:55

揭秘 Objective-C:面向对象的强大语言 (揭秘狂飙兄弟事件车辆鉴定公司)

揭秘 Objective-C:面向对象的强大语言 (揭秘狂飙兄弟事件车辆鉴定公司)

Objective,C,面向对象的强大语言引言Objective,C是一种面向对象的编程语言,最初由苹果公司开发,用于macOS和iOS操作系统,它基于Smalltalk语言,并融合了C语言的特性,使其成为一种强大且灵活的语言,在本文中,我们将深入了解Objective,C,探讨其功能、优点和缺点,并了解其在移动开发和桌面应用程序中的...。

最新资讯 2024-09-28 04:59:05

提升你的博客:使用 Lightbox 创造引人入胜的视觉内容 (提升你的博客能力)

提升你的博客:使用 Lightbox 创造引人入胜的视觉内容 (提升你的博客能力)

提升你的博客,使用Lightbox创造引人入胜的视觉内容前言在现代网络环境中,引人入胜的视觉内容至关重要,它可以瞬间抓住读者的注意力,提高参与度并促进转化,Lightbox是一个强大的工具,可以让你轻松地将高质量的图像、视频和全景视图整合到你的博客中,从而提升用户体验,什么是Lightbox,Lightbox是一种JavaScript...。

互联网资讯 2024-09-28 03:56:44

activiti建模与部署教程:从BPMN流程图到可执行工作流 (activities)

activiti建模与部署教程:从BPMN流程图到可执行工作流 (activities)

简介Activiti是一个开源的业务流程管理,BPM,和工作流引擎,它允许您建模、部署和管理复杂的业务流程,本教程将指导您完成使用Activiti从BPMN流程图创建可执行工作流的过程,先决条件安装Activiti安装BPMN建模工具,例如,CamundaModeler,了解BPMN基本符号步骤1,建模BPMN流程使用BPMN建模工具...。

本站公告 2024-09-26 21:44:20

CakePHP 中的单元测试:编写稳健可靠的代码 (CakePHP)

CakePHP 中的单元测试:编写稳健可靠的代码 (CakePHP)

前言单元测试是软件开发过程中至关重要的技术,它有助于确保代码的健壮性和可靠性,本文将深入探讨CakePHP中的单元测试,指导你编写稳健可靠的代码,了解CakePHP单元测试CakePHP中的单元测试是基于PHPUnit框架构建的,并通过CakePHP的测试用例类扩展了其功能,测试用例类提供了特定的方法和助手,简化了CakePHP应用程...。

技术教程 2024-09-25 08:18:09

Coursera(course是什么意思)

Coursera(course是什么意思)

什么是Coursera,Coursera是一个在线学习平台,提供各种主题的课程,包括商科、计算机科学、数据科学、健康、艺术等,这些课程由世界领先的大学和组织提供,如斯坦福大学、密歇根大学、谷歌和IBM,Coursera上的课程有两种主要类型,专业证书课程和学位课程,专业证书课程通常需要几个月的学习时间,旨在培养特定的技能,而学位课程则...。

互联网资讯 2024-09-23 08:24:08

探索 fprintf 的强大功能:在 C 中控制输出格式 (探索后妈的桃花源作文)

探索 fprintf 的强大功能:在 C 中控制输出格式 (探索后妈的桃花源作文)

简介fprintf,函数是C语言标准I,O库中一个强大的函数,它允许开发者以格式化方式输出数据,通过使用格式说明符,开发者可以控制输出的宽度、对齐、小数点精度以及其他属性,本篇文章将深入探讨fprintf,函数的用法和功能,并通过示例展示如何使用它来以各种格式输出数据,语法fprintf,函数的语法如下,```cintfprin...。

互联网资讯 2024-09-15 11:19:37

Excel 函数库:了解各种函数及其应用场景 (excel函数公式大全)

Excel 函数库:了解各种函数及其应用场景 (excel函数公式大全)

指定范围内的数字的平均值计算平均值或中心趋势MIN返回指定范围内的最小值查找最小值或极值MAX返回指定范围内的最大值查找最大值或极值SQRT计算指定数字的平方根进行几何或统计计算SIN计算指定角度的正弦值进行三角测量或建模文本函数函数说明应用场景LEFT从文本字符串中返回指定数量的左部字符提取文本字符串的一部分RIGHT从文本字符串中...。

最新资讯 2024-09-13 12:43:32

理解随机数函数的优势和局限性:从伪随机到真随机 (理解随机数函数的应用)

理解随机数函数的优势和局限性:从伪随机到真随机 (理解随机数函数的应用)

引言随机数在计算机科学中扮演着至关重要的角色,广泛应用于密码学、仿真、游戏和机器学习等领域,并非所有随机数函数都是平等的,它们具有各自的优势和局限性,本文将深入探讨伪随机数和真随机数之间的差异,以及如何选择适合特定应用的随机数函数,伪随机数定义伪随机数由确定性算法生成,即算法基于一个种子值,该种子值决定了产生的随机数序列,尽管这些数看...。

最新资讯 2024-09-11 09:26:44

vb.net 源码解谜:探索编程的奥秘 (vbnet和vb的区别)

vb.net 源码解谜:探索编程的奥秘 (vbnet和vb的区别)

VB.NET源码概述VB.NET是面向对象编程语言,扩展了VisualBasic6.0的功能,它采用面向对象技术,将代码组织成称为类的模块,在VB.NET中,声明变量、方法和属性时使用关键字Dim,并使用.运算符访问对象成员,VB.NET代码以.vb扩展名保存,以下是一个简单的HelloWorld程序示例,ModuleModule1S...。

最新资讯 2024-09-10 01:35:30

可扩展性:开源系统可以随着机构的需求而轻松扩展,处理大量考生和考试。(可扩展性是什么)

可扩展性:开源系统可以随着机构的需求而轻松扩展,处理大量考生和考试。(可扩展性是什么)

可扩展性的含义可扩展性是指系统能够随着需求的增长而轻松扩展以处理增加的负载和功能的能力,对于考试系统而言,可扩展性至关重要,因为机构的需求会随着考生数量、考试次数和考试复杂性的增加而不断变化,开源考试系统的可扩展性优势开源考试系统通常具有以下可扩展性优势,无许可证限制开源系统没有供应商限制,这意味着机构可以根据需要扩展它们,而无需支付...。

互联网资讯 2024-09-08 10:58:20

从头到尾理解正则表达式:解锁文本匹配的强大工具 (从头到尾理解词语)

从头到尾理解正则表达式:解锁文本匹配的强大工具 (从头到尾理解词语)

什么是正则表达式,正则表达式,也称为正规表达式,是一种用于匹配文本模式的特殊语法,它是一种强大的工具,可用于各种文本处理任务,例如,查找特定单词或短语提取特定格式的数据,例如日期或电子邮件地址验证用户输入替换文本正则表达式语法正则表达式使用各种符号、元字符和修饰符来定义匹配模式,以下是一些最常用的元素,字符类,匹配任何属于指定字符类的...。

最新资讯 2024-09-05 22:56:11