成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

前端 四種渲染技術的計算機理論基礎

開發 前端
前端可用的渲染技術有 html + css、canvas、svg、webgl,我們會綜合運用這些技術來繪制頁面。有沒有想過這些技術有什么區別和聯系,它們和圖形學有什么關系呢?

[[440188]]

本文轉載自微信公眾號「神光的編程秘籍」,作者神說要有光zxg  。轉載本文請聯系神光的編程秘籍公眾號。

前端可用的渲染技術有 html + css、canvas、svg、webgl,我們會綜合運用這些技術來繪制頁面。有沒有想過這些技術有什么區別和聯系,它們和圖形學有什么關系呢?

本文我們就來談一下網頁渲染技術的計算機理論基礎。

渲染的理論基礎

人眼的視網膜有視覺暫留機制,也就是看到的圖像會繼續保留 0.1s 左右,圖形界面就是根據這個原理來設計的一幀一幀刷新的機制,要保證 1s 至少要渲染 10 幀,這樣人眼看到畫面才是連續的。

每幀顯示的都是圖像,它是由像素組成的,是顯示的基本單位。不同顯示器實現像素的原理不同。

我們要繪制的目標是矩形、圓形、橢圓、曲線等各種圖形,繪制完之后要把它們轉成圖像。圖形的繪制有一系列的理論,比如貝塞爾曲線是畫曲線的理論。圖形轉圖像的過程叫做光柵化。這些圖形的繪制和光柵化的過程,都是圖形學研究的內容。

圖形可能做縮放、平移、旋轉等變化,這些是通過矩陣計算來實現的,也是圖形學的內容。

除了 2D 的圖形外,還要繪制 3D 的圖形。3D 的原理是把一個個三維坐標的頂點連起來,構成一個一個三角形,這是造型的過程。之后再把每一個三角形的面貼上圖,叫做紋理。這樣組成的就是一個 3D 圖形,也叫 3D 模型。

3D 圖形也同樣需要經歷光柵化變成二維的圖像,然后顯示出來。這種三維圖形的光柵化需要找一個角度去觀察,就像拍照一樣,所以一般把這個概念叫做相機。

同時,為了 3D 圖形更真實,還引入了光線的概念,也就是一束光照過來,3D 圖形的每個面都會有什么變化,怎么反射等。不同材質的物體反射的方式不同,比如漫反射、鏡面反射等,也就有不同的計算公式。一束光會照射到一些物體,到物體的反射,這個過程需要一系列跟蹤的計算,叫做光線追蹤技術。

我們也能感受出來,3D 圖形的計算量比 2D 圖形大太多了,用 CPU 計算很可能達不到 1s 大于 10 幀,所以后面出現了專門用于 3D 渲染加速的硬件,叫做 GPU。它是專門用于這種并行計算的,可以批量計算一堆頂點、一堆三角形、一堆像素的光柵化,這個渲染流程叫做渲染管線。

現在的渲染管線都是可編程的,也就是可以控制頂點的位置,每個三角形的著色,這兩種分別叫做頂點著色器(shader)、片元著色器。

總之,2D 或 3D 的圖形經過繪制和光柵化就變成了一幀幀的圖像顯示出來。

變成圖像之后其實還可以做一些圖像處理,比如灰度、反色、高斯模糊等各種濾鏡的實現。

所以,前端的渲染技術的理論基礎是計算機圖形學 + 圖像處理。

不同的渲染技術的區別和聯系

具體到前前端的渲染技術來說,html+css、svg、canvas、webgl 都是用于圖形和圖像渲染的技術,但是它們各有側重:

html + css

html + css 是用于圖文布局的,也就是計算文字、圖片、視頻等的顯示位置。它提供了很多計算規則,比如流式布局很適合做圖文排版,彈性布局易于做自適應的布局等。但是它不適合做更靈活的圖形繪制,這時就要用其他幾種技術了。

canvas

canvas 是給定一塊畫布區域,在不同的位置畫圖形和圖像,它沒有布局規則,所以很靈活,常用來做可視化或者游戲的開發。但是 canvas 并不會保留繪制的圖形的信息,生成的圖像只能顯示在固定的區域,當顯示區域變大的時候,它不能跟隨一起放縮,就會失真,如果有放縮不失真的需求就要用其他渲染技術了。

svg

svg 會在內存中保留繪制的圖形的信息,顯示區域變化后會重新計算,是一個矢量圖,常用于 icon、字體等的繪制。

webgl

上面的 3 種技術都是用于 2D 的圖形圖像的繪制,如果想繪制 3D 的內容,就要用 webgl 了。它提供了繪制 3D 圖形的 api,比如通過頂點構成 3D 的模型,給每一個面貼圖,設置光源,然后光柵化成圖像等的 api。它常用于通過 3D 內容增強網站的交互效果,3D 的可視化,3D 游戲等,再就是虛擬現實中的 3D 交互。

所以,雖然前端渲染技術的底層原理都是圖形學 + 圖像處理,但上層提供的 4 種渲染技術各有側重點。

不過,它們還是有很多相同的地方的:

  • 位置、大小等的變化都是通過矩陣的計算
  • 都要經過圖形轉圖像,也就是光柵化的過程
  • 都支持對圖像做進一步處理,比如各種濾鏡
  • html + css 渲染會分不同圖層分別做計算,canvas 也會根據計算量分成不同的 canvas 來做計算

因為他們底層的圖形學原理還是一致的。

除此以外,3D 內容,也就是 webgl 的內容會通過 GPU 來計算,但 css 其實也可以通過 GPU 計算,這叫做 css 的硬件加速,有四個屬性可以觸發硬件加速:transform、opacity、filter、will-change。(更多的 GPU 和 css 硬件加速的內容可以看這篇文章:這一次,徹底搞懂 GPU 和 css 硬件加速)

編譯原理的應用

除了圖形學和圖像技術外,html+css 還用到了編譯技術。因為 html、css 是一種 DSL( domin specific language,領域特定語言),也就是專門為界面描述所設計的語言。用 html 來表達 dom 結構,用 css 來給 dom 添加樣式都只需要很少的代碼,然后運行時解析 html 和 css 來創建 dom、添加樣式。

DSL 可以讓特定領域的邏輯更容易表達,前端領域還有一些其他技術也用到了 DSL,比如 graphql。

總結

前端領域的四種渲染技術:html+css、canvas、svg、webgl 各有側重點,分別用于不同內容的渲染:

  • html+ css 用于布局
  • canvas 用于靈活的圖形圖像渲染
  • svg 用于矢量圖渲染
  • webgl 用于 3D 圖形的渲染

但他們的理論基礎都是計算機圖形學 + 圖像處理。(而且,html+css 為了方便邏輯的表達,還設計了 DSL,這用到了編譯技術)

這四種渲染技術看似差別很大,但在理論基礎層面,很多東西都是一樣的。這也是為什么我們要去學計算機基礎,因為它可以讓我們對技術有一個更深入的更本質的理解。

 

責任編輯:武曉燕 來源: 神光的編程秘籍
相關推薦

2010-06-13 13:35:54

計算機網絡協議

2010-04-05 17:04:22

約翰·馮·諾依曼生平

2022-07-21 12:25:54

智慧交通人工智能物聯網

2022-07-04 12:07:57

智慧城市智能建筑物聯網

2020-05-19 20:13:04

物聯網計算類型IOT

2015-10-10 10:58:45

Flynn指令流數據流

2011-03-22 09:33:39

J-Hi

2011-08-01 14:24:42

數據加密加密

2022-06-15 11:00:53

計算機病毒惡意代碼

2010-04-15 10:45:57

IE9渲染引擎

2018-12-05 16:25:14

2021-12-01 23:05:27

物聯網計算數據

2021-06-18 16:16:32

計算機AI 定理

2009-01-12 09:37:56

AMD云計算Fusion

2022-06-27 11:09:06

邊緣計算

2016-12-06 09:01:14

2015-05-08 12:24:10

惡意軟件逃避技術

2015-11-06 13:27:39

2022-01-12 11:02:01

云計算安全技術

2012-10-24 11:29:15

云計算管理平臺
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产日韩中文字幕 | 国产视频二区在线观看 | 性高朝久久久久久久3小时 av一区二区三区四区 | 91福利网 | 不卡一区 | 天堂一区二区三区四区 | 免费看淫片 | 国产精品99| 久久久精品黄色 | 五月天天丁香婷婷在线中 | 日本精品视频 | 欧美一级黄带 | 日本久草 | 久久成人国产精品 | 夜夜爽99久久国产综合精品女不卡 | 国产农村妇女精品一区 | 久久不卡 | 欧美日韩视频网站 | 国产成人精品区一区二区不卡 | 精品国产乱码久久久久久蜜柚 | 久操亚洲 | 这里只有精品999 | 在线视频a| 国产区一区 | 国产在线精品一区二区 | 中日韩欧美一级片 | a级在线 | 极情综合网 | 国产日韩精品视频 | 中文字幕日韩在线 | h视频在线观看免费 | 国产精品久久久久久久久久99 | 亚洲精品在线免费看 | 亚洲精品字幕 | 99re6热在线精品视频播放 | 国产综合久久 | 亚洲成人国产 | 毛片在线免费 | 91视频中文 | 精久久久| 欧美精品日韩精品 |