0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

eTS的起源和演進思路

HarmonyOS開發(fā)者 ? 來源:HarmonyOS開發(fā)者 ? 作者:HarmonyOS開發(fā)者 ? 2022-07-14 09:32 ? 次閱讀

Mozilla創(chuàng)造了JS,Microsoft創(chuàng)建了TS,Huawei進一步推出了eTS。

從最初的基礎的邏輯交互能力,到具備類型系統(tǒng)的高效工程開發(fā)能力,再到融合聲明式UI、多維狀態(tài)管理等豐富的應用開發(fā)能力,共同組成了相關(guān)的演進脈絡。

eTS(extended TypeScript)是鴻蒙生態(tài)的一種應用開發(fā)語言。它在TypeScript(簡稱TS)的基礎上,擴展了聲明式UI、狀態(tài)管理等相應的能力,讓開發(fā)者可以以更簡潔、更自然的方式開發(fā)高性能應用。TS是JavaScript(簡稱JS)的超集,eTS則是TS的超集。eTS會結(jié)合應用開發(fā)和運行的需求持續(xù)演進,包括但不限于引入分布式開發(fā)范式、并行和并發(fā)能力增強、類型系統(tǒng)增強等方面的語言特性。本期我們結(jié)合JS和TS以及相關(guān)的開發(fā)框架的發(fā)展,為大家介紹eTS的起源和演進思路。

一、JS

JS語言由Mozilla創(chuàng)造,最初主要是為了解決頁面中的邏輯交互問題,它和HTML(負責頁面內(nèi)容)、CSS(負責頁面布局和樣式)共同組成了Web頁面/應用開發(fā)的基礎。隨著Web和瀏覽器的普及,以及Node.js進一步將JS擴展到了瀏覽器以外的環(huán)境,JS語言得到了飛速的發(fā)展。在2015年相關(guān)的標準組織ECMA發(fā)布了一個主要的版本ECMAScript 6(簡稱ES6),這個版本具備了較為完整的語言能力,包括類(Class)、模塊(Module)、相關(guān)的語言基礎API增強(Map/Set等)、箭頭函數(shù)(Arrow Function)等。從2015年開始,ECMA每年都會發(fā)布一個標準版本,比如ES2016/ES2017/ES2018等,JS語言越來越成熟。

為了提升應用的開發(fā)效率,相應的JS前端框架也不斷地涌現(xiàn)出來。其中比較典型的有Facebook發(fā)起的React.js,以及個人開發(fā)者尤雨溪發(fā)起的Vue.js。React和Vue的主要出發(fā)點都是將響應式編程的能力引入到應用開發(fā)中,實現(xiàn)數(shù)據(jù)和界面內(nèi)容的自動關(guān)聯(lián)處理。具體的實現(xiàn)方式上,React對JS做了一些擴展,引入了JSX(JavaScript XML)語法,可以將HTML的內(nèi)容統(tǒng)一表示成JS來處理;Vue則是通過擴展的模板語法(Template)的方式來處理。

下面通過兩個示例,為大家簡要介紹React和Vue。(示例來源于w3schools網(wǎng)站:https://www.w3schools.com/whatis/)

1. React示例

1d627030-0311-11ed-ba43-dac502259ad0.png

圖1 React示例

以上代碼描述了React怎么在指定的頁面元素(id為id01的div元素)中改變相應的字符串內(nèi)容(從“Hello World!”到“Hello John Doe!”)。其中第5行的ReactDOM.render()是React JS庫提供的一個方法,它可以將相應的內(nèi)容刷新到指定的HTML元素中。第6行是符合JSX語義的一段代碼,它包含了一個類似HTML結(jié)構(gòu)的字符串(《h1》。..《/h1》),以及一個表達數(shù)據(jù)綁定語義的字段({name}),會關(guān)聯(lián)到第4行定義的name變量。通過這種方式,JSX把HTML的語義以及數(shù)據(jù)綁定機制和JS語言結(jié)合起來,可以方便地在JS語言中使用。

2. Vue示例

1d74a93a-0311-11ed-ba43-dac502259ad0.png

圖2 Vue示例

以上Vue示例代碼也描述了類似的功能。其中第1~3行是類似HTML的語法,描述一個id為app的div頁面元素,其中的{{message}}是數(shù)據(jù)綁定的語義,在Vue中表示為Template。第6~9行是JS代碼,描述了一個Vue對象,對應了上述的app頁面元素以及所需的數(shù)據(jù)變量message的內(nèi)容信息。第11~13行則是JS函數(shù),它改變message變量的值為“John Doe”。執(zhí)行這個函數(shù)時Vue會自動實現(xiàn)相應的UI界面刷新。

如上所示,React和Vue所表達的能力是類似的,不過側(cè)重點稍微有所不同。React主要是基于JSX的語法,將類HTML的語法融合到JS語言中;Vue則是基于Template機制,在HTML的基礎上擴展相應的語義。當然,上面這兩個例子只是簡要地描述了React和Vue的基礎信息,更詳細的語法以及CSS相關(guān)的使用等都沒涉及。

從運行時的維度來看,基于React以及Vue的應用都可運行在Web引擎上。為了進一步提升相應的性能體驗,2015年Facebook在React基礎上推出了React Native, 在渲染架構(gòu)上沒有采用傳統(tǒng)的Web引擎渲染路徑,而是橋接到相應OS平臺的原生UI組件上。2019年Facebook引入全新實現(xiàn)的JS引擎Hermes,并推出一系列架構(gòu)改進來進一步提升React Native的性能體驗。2016年阿里巴巴開源的Weex則是基于Vue做了一些類似的改進,也是采用了橋接到原生UI組件的渲染路徑。

二、TS

隨著JS生態(tài)的發(fā)展,如何更有效地支撐大型的應用工程開發(fā)變成了一個重要的課題。大型的應用工程一般會涉及較復雜的代碼以及較多的團隊協(xié)作,對語言的規(guī)范性,模塊的復用性、擴展性以及相關(guān)的開發(fā)工具都提出了更高的要求。為此,Microsoft在JS的基礎上,創(chuàng)建了TS語言,并在2014年正式發(fā)布了1.0版本。TS主要從以下幾個方面做了進一步的增強:

引入了類型系統(tǒng),并提供了類型檢查以及類型自動推導能力,可以進行編譯時錯誤檢查,有效的提升了代碼的規(guī)范性以及錯誤檢測范圍和效率。

在類型系統(tǒng)基礎上,引入了聲明文件(Declaration Files)來管理接口或其他自定義類型。聲明文件一般是以d.ts的形式來定義模塊中的接口,這些接口和具體的實現(xiàn)做了相應的分離,有助于各模塊之間的分工協(xié)作。另外,TS通過接口,泛型(Generics)等相關(guān)特性的支持,進一步增強了設計復雜的框架所需的擴展以及復用能力。

在工具層面,TS也有相應的編輯器、編譯器、IDE(Integrated Development Environment)插件等相關(guān)的工具,來進一步提升開發(fā)效率。

TS在兼容JS生態(tài)方面也做了較好的平衡,TS應用通過相應編譯器可以編譯出純JS應用,可以在標準的JS引擎上運行。同時,TS定位為JS的超集,即JS應用也是合法的TS應用。此外,在標準層面上,TS兼容ECMA的相應標準,并維護那些還未成為ECMA標準的新特性。

三、eTS

如上所述,基于JS的前端框架以及TS的引入,進一步提升了應用開發(fā)效率,但依然存在一些不足。

從開發(fā)者維度來看:

寫一個應用需要了解三種語言(JS/TS、HTML和CSS)。這對Web開發(fā)者相對友好,但對非Web開發(fā)者來說,負擔較重。

從運行時維度來看:

在語言運行時方面,盡管TS有了類型的加持,但也只是用于編譯時檢查,然后通過TS Compiler轉(zhuǎn)成JS,運行時引擎還是無法利用到基于類型系統(tǒng)的優(yōu)化。

在渲染方面,主流Web引擎由于本身復雜度以及歷史原因,性能、資源占用方面與常見OS原生框架都有一定的差距,尤其在移動平臺上。React Native通過渲染架構(gòu)的改進一定程度上提升了性能體驗,但在平臺渲染效果和能力的一致性,以及JS語言性能等方面還是存在一定的不足。

Google在2018年底推出的Flutter則走了另外一條路,結(jié)合新的語言Dart,引入新的聲明式開發(fā)范式,基于Skia的自繪制引擎構(gòu)建可跨平臺的獨立的渲染能力。這是一種較為創(chuàng)新的方案,不過也有幾點不足:

Dart語言生態(tài)。盡管Dart語言2011年就已推出,而且目標是取代JS,但整個生態(tài)還是非常弱小,Dart語言發(fā)布7年后隨著Flutter的推出才有所改善。整體而言,Dart和主流語言生態(tài)相比還是有非常大的差距。

開發(fā)范式。Flutter暴露了很多細粒度的Widget接口,整體開發(fā)的簡潔度,開發(fā)門檻,尤其是和Apple推出的SwiftUI相比,存在一定的差距。

有意思的是,Google在2021年又推出了新的開發(fā)框架Jetpack Compose,結(jié)合了Kotlin的語言生態(tài),設計了新的聲明式UI開發(fā)范式。

2019年,我們在思考如何構(gòu)建新的應用開發(fā)框架的時候,從以下幾個維度進行了重點考慮:

語言生態(tài)

開發(fā)效率

性能體驗

跨設備/跨平臺能力

由于JS/TS有比較完善的開發(fā)者生態(tài),語言也比較中立友好,有相應的標準組織可以逐步演進,JS/TS語言成了比較自然的選擇。以JS/TS為基礎,在開發(fā)框架的維度,我們做了如下的架構(gòu)演進設計:

通過基于JS擴展的類Web開發(fā)范式,來支持主流的前端開發(fā)方式。同步的,在運行時方面,通過渲染引擎的增強(平臺無關(guān)的自繪制機制、聲明式UI后端設計、動態(tài)布局/多態(tài)UI組件等),語言編譯器和運行時的優(yōu)化增強(代碼預編譯、高效FFI-Foreign Function Interface、引擎極小化等),進一步提升相關(guān)的性能體驗,并可部署到不同設備上(包括百KB級內(nèi)存的輕量設備)。另外,通過平臺適配層的設計,構(gòu)建了跨OS平臺的基礎設施。

通過基于TS擴展的聲明式UI開發(fā)范式,提供了更簡潔更自然的開發(fā)體驗。在運行時方面,在上述的基礎上,結(jié)合語言運行時的類型優(yōu)化,以及渲染運行時的扁平化流水線技術(shù)等,進一步提升性能體驗。

1d8440e8-0311-11ed-ba43-dac502259ad0.png

圖3 ArkUI開發(fā)框架

圖3描述了ArkUI開發(fā)框架的整體架構(gòu),其中,基于TS擴展的聲明式UI范式中所用的語言就是eTS。下面結(jié)合一個具體示例,從應用開發(fā)視角簡單介紹下基于eTS的全新聲明式開發(fā)范式。

如圖4所示的代碼示例,UI界面會顯示一個 “Hello World” 的文本和一個 “Click me” 按鈕。當用戶點擊“Click me”按鈕時,字符串變量 myText 的值會從“World” 變?yōu)椤癆CE”,文本最終顯示為 “Hello ACE”。

1d9a522a-0311-11ed-ba43-dac502259ad0.png

圖4 eTS聲明式開發(fā)范式

這個示例中所包含的eTS聲明式開發(fā)范式的基本組成說明如下:

(1) 裝飾器

用來裝飾類、結(jié)構(gòu)體、方法以及變量,賦予其特殊的含義,如上述示例中 @Entry 、 @Component 、 @State 都是裝飾器。具體而言, @Component 表示這是個自定義組件; @Entry 則表示這是個入口組件; @State 表示組件中的狀態(tài)變量,這個狀態(tài)變化會引起 UI 變更。

(2) 自定義組件

可復用的 UI 單元,可組合其它組件,如上述被 @Component 裝飾的 struct Hello。

(3) UI 描述

聲明式的方式來描述 UI 的結(jié)構(gòu),如上述 build() 方法內(nèi)部的代碼塊。

(4) 內(nèi)置組件

框架中默認內(nèi)置的基礎和布局組件,可直接被開發(fā)者調(diào)用,比如示例中的 Column、Text、Divider、Button。

(5) 事件方法

用于添加組件對事件的響應邏輯,統(tǒng)一通過事件方法進行設置,如跟隨在Button后面的onClick()。

(6) 屬性方法

用于組件屬性的配置,統(tǒng)一通過屬性方法進行設置,如fontSize()、width()、height()、color() 等,可通過鏈式調(diào)用的方式設置多項屬性。

從UI框架的需求角度,eTS在TS的類型系統(tǒng)的基礎上,做了進一步的擴展:定義了各種裝飾器、自定義組件和UI描述機制,再配合UI開發(fā)框架中的UI內(nèi)置組件、事件方法、屬性方法等共同構(gòu)成了應用開發(fā)的主體。在應用開發(fā)中,除了UI的結(jié)構(gòu)化描述之外,還有一個重要的方面:狀態(tài)管理。如上述示例中,用 @State 裝飾過的變量 myText ,包含了一個基礎的狀態(tài)管理機制,即 myText 的值的變化會自動觸發(fā)相應的 UI 變更 (Text組件)。ArkUI 中進一步提供了多維度的狀態(tài)管理機制。和 UI 相關(guān)聯(lián)的數(shù)據(jù),不僅可以在組件內(nèi)使用,還可以在不同組件層級間傳遞,比如父子組件之間,爺孫組件之間,也可以是全局范圍內(nèi)的傳遞,還可以是跨設備傳遞。另外,從數(shù)據(jù)的傳遞形式來看,可分為只讀的單向傳遞和可變更的雙向傳遞。開發(fā)者可以靈活的利用這些能力來實現(xiàn)數(shù)據(jù)和 UI 的聯(lián)動。

總體而言,ArkUI開發(fā)框架通過擴展成熟語言、結(jié)合語法糖或者語言原生的元編程能力、以及UI組件、狀態(tài)管理等方面設計了統(tǒng)一的UI開發(fā)范式,結(jié)合原生語言能力共同完成應用開發(fā)。這些構(gòu)成了當前eTS基于TS的主要擴展。

ArkUI完整的開發(fā)范式可參考這里:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/Readme-CN.md

四、下一步演進

接下來,除UI框架需求之外,eTS也會結(jié)合應用開發(fā)及運行的其他方面需求持續(xù)演進:

1. 更完善的類型系統(tǒng)

我們已經(jīng)設計并實現(xiàn)了專門運行時,利用eTS的類型輸入,在程序執(zhí)行一開始就獲得較高的運行性能(不像其它傳統(tǒng)JS引擎需要預熱才能獲取高性能)。但是目前的類型系統(tǒng)在運行時的設計上仍然考慮了兼容模式,即在運行時,當對象類型發(fā)生變化時會走Bailout機制,以使程序在類型不匹配時仍能正常運行。一種更極致的方式是:引入一種特定模式來支持確定類型的表達,當開發(fā)者可以明確類型時,提供相應的信息,這樣運行時可以通過針對性設計,進一步提升性能體驗。另外,eTS將來也會在類型系統(tǒng)中拓展一些新的類型,在與運行時結(jié)合的優(yōu)化中會提供更好的性能體驗。

2. 更靈活的并行化處理

目前的移動設備基本都是多核設備(包括同一配置的多核以及不同配置的大小核),有些設備還會攜帶多種計算芯片CPU/GPU/NPU/。..)。語言在并發(fā)特性上如何充分應用多核設備甚至異構(gòu)芯片是一個重要的課題。目前我們采用的仍然是業(yè)界常見的類Actor模型的并發(fā)接口——Worker,它彌補了Actor模型的些許劣勢,即允許用戶轉(zhuǎn)移和共享大量的Buffer以避免通信時拷貝的開銷。但是開發(fā)者仍需自己去管理Worker的生命周期,利用Worker也不能非常方便地觸發(fā)一個異步并行任務。我們已經(jīng)在嘗試在Actor模型上封裝一種任務接口,方便用戶更容易利用多核觸發(fā)異步并行任務。我們也一直在關(guān)注Swift、Dart、Kotlin、Go這些語言并發(fā)特性的發(fā)展和運行時的實現(xiàn),eTS的特定模式中靜態(tài)類型模型的引入也會給并發(fā)機制帶來更多高性能實現(xiàn)的可能性,比如對象的凍結(jié)、所有權(quán)轉(zhuǎn)移、值語義等等。我們將持續(xù)致力于提供簡潔高效的并發(fā)API,幫助應用開發(fā)者更容易開發(fā)出高性能的應用。

當然,eTS以及ArkUI開發(fā)框架還很年輕,還有很多其它方面也會持續(xù)演進,比如UI自定義能力的進一步完善,語言運行時以及跨語言交互的進一步優(yōu)化,跨OS平臺能力的擴展(包括Android、iOS等),分布式開發(fā)范式等等。

作為應用生態(tài)的底座,應用開發(fā)框架的創(chuàng)新永無止境。我們希望和廣大的開發(fā)者一起,持續(xù)圍繞著開發(fā)效率、運行體驗、跨設備/跨平臺等相關(guān)方面一起合作,一起創(chuàng)新,共建繁榮的應用生態(tài)!

原文標題:淺析eTS的起源和演進

文章出處:【微信公眾號:HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6835

    瀏覽量

    88754
  • 瀏覽器
    +關(guān)注

    關(guān)注

    1

    文章

    1009

    瀏覽量

    35240
  • 應用開發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    58

    瀏覽量

    9324
收藏 人收藏

    評論

    相關(guān)推薦

    FWA產(chǎn)業(yè)的發(fā)展現(xiàn)狀和演進方向

    近日,在2024 MBBF展會期間,全球FWA演進圓桌成功舉辦,吸引了超過80位來自全球的運營商、行業(yè)分析師及生態(tài)合作伙伴代表。會上,與會者分享了最新的FWA行業(yè)洞察與實踐,共同探討了FWA的當前發(fā)展和未來演進方向。
    的頭像 發(fā)表于 11-06 17:21 ?370次閱讀

    監(jiān)控平臺設計思路

    電子發(fā)燒友網(wǎng)站提供《監(jiān)控平臺設計思路.pptx》資料免費下載
    發(fā)表于 10-09 11:18 ?0次下載

    點焊機的起源和發(fā)展

    與制造的大規(guī)模化奠定了堅實的基礎。這不僅是技術(shù)進步的體現(xiàn),更凝聚了人類智慧與創(chuàng)造力的結(jié)晶,標志著焊接行業(yè)向自動化、智能化方向邁進。以下是點焊機的起源和發(fā)展歷程的詳細梳理。
    的頭像 發(fā)表于 09-12 15:16 ?222次閱讀
    點焊機的<b class='flag-5'>起源</b>和發(fā)展

    藍牙傳輸技術(shù)的演進與發(fā)展

    們的生活和工作帶來了極大的便利。本文將對藍牙模塊技術(shù)的演進與發(fā)展進行綜述。 一、藍牙技術(shù)的起源與初期發(fā)展 藍牙技術(shù)起源于1994年,由瑞典的愛立信公司最先提出。當時的目的是為了解決移動電話、計算機以及其他設備之間的無線
    的頭像 發(fā)表于 07-05 17:56 ?1171次閱讀

    esp32c3在別的.c文件用微妙函數(shù)ets_delay_us(20)函數(shù)報錯怎么解決?

    沒添加文件是這個錯../main/motor.c:41:21: error: implicit declaration of function \'ets_delay_us\' [-Werror
    發(fā)表于 06-20 07:46

    RISC--V的起源是什么?

    突然有個想法 RISC--V的起源是什么?
    發(fā)表于 05-24 08:03

    是德科技與ETS Lindgren合作推出NB-NTN OTA測試解決方案

    近日,是德科技與ETS Lindgren共同發(fā)布了一款創(chuàng)新的OTA測試解決方案,該方案專為測試支持窄帶非地面網(wǎng)絡(NB-NTN)技術(shù)的設備而設計。這一創(chuàng)新性的解決方案標志著雙方在通信測試領(lǐng)域的深入合作,共同為NB-NTN技術(shù)的推廣和應用提供了有力支持。
    的頭像 發(fā)表于 03-14 10:57 ?654次閱讀

    鴻蒙開發(fā)學習:【ets_frontend組件】

    ets_frontend組件采用命令行交互方式,支持將JavaScript代碼轉(zhuǎn)換為方舟字節(jié)碼文件,使其能夠在方舟運行時上運行。支持Windows/Linux/MacOS平臺。方舟前端工具在linux平臺上可通過全量編譯或指定編譯前端工具鏈獲取。
    的頭像 發(fā)表于 03-10 19:58 ?293次閱讀
    鴻蒙開發(fā)學習:【<b class='flag-5'>ets</b>_frontend組件】

    鴻蒙ArkTS的起源和簡介

    能力增強、類型系統(tǒng)增強等方面的語言特性。本期我們結(jié)合JS和TS以及相關(guān)的開發(fā)框架的發(fā)展,為大家介紹ArkTS的起源演進思路。 2、JS JS語言由Mozilla創(chuàng)造,最初主要是為了解決頁面中的邏輯
    發(fā)表于 01-16 16:23

    arkcompiler_runtime_core/static_core/runtime和arkcompiler_ets_runtime有什么關(guān)聯(lián)

    arkcompiler_runtime_core/static_core/runtime有內(nèi)存分配和垃圾回收,arkcompiler_ets_runtime也有獨立的內(nèi)存管理和垃圾回收。 這兩個庫之間是什么關(guān)系和作用
    發(fā)表于 01-10 21:39

    關(guān)于網(wǎng)絡綜合和濾波理論的起源演進歷程

    濾波器理論首先由加載線(loaded lines)演化而來。一條線結(jié)合了分布電感和電容的效應(電感加載增加了有效電感的值,這通常遠低于電容的值。)分布加載增加了分布電感本身的值(例如,通過磁性材料包裹在導體周圍)。
    的頭像 發(fā)表于 01-02 10:31 ?1304次閱讀
    關(guān)于網(wǎng)絡綜合和濾波理論的<b class='flag-5'>起源</b>及<b class='flag-5'>演進</b>歷程

    Nullmax揭秘BEV-AI技術(shù)架構(gòu)加速量產(chǎn)方案演進

    12月19日,Nullmax首席科學家成二康博士應邀出席2023全球自動駕駛峰會(GADS 2023),在自動駕駛BEV感知技術(shù)論壇上發(fā)表《BEV-AI技術(shù)架構(gòu) – 量產(chǎn)方案演進》主題報告,透過Nullmax量產(chǎn)方案演進路線圖,深度剖析BEV-AI技術(shù)架構(gòu)的構(gòu)建
    的頭像 發(fā)表于 12-22 14:46 ?1097次閱讀

    印刷電路板的起源和演變

    在電子行業(yè)有一個關(guān)鍵的部件叫做PCB(printed circuit board,印刷電板)。這是一個非?;A的部件,導致很多人都很難解釋到底什么是PCB。這篇文章將會詳細介紹關(guān)于PCB的相關(guān)知識,讓大家了解印刷電路板的起源和演變。
    的頭像 發(fā)表于 12-13 15:59 ?1159次閱讀
    印刷電路板的<b class='flag-5'>起源</b>和演變

    無源互調(diào)(PIM)的起源及影響

    無源互調(diào)(PIM)的起源及影響? 無源互調(diào)(Protocol Independent Multicast,PIM)是一種用于在互聯(lián)網(wǎng)中進行組播傳輸?shù)木W(wǎng)絡協(xié)議。在互聯(lián)網(wǎng)技術(shù)蓬勃發(fā)展的時期,人們意識到
    的頭像 發(fā)表于 11-28 17:23 ?863次閱讀

    VSync的起源是什么

    VSync的起源 顯示屏上一幀畫面的顯示過程,是像素自上而下逐行掃描的過程,如果在上一幀的掃描還沒有結(jié)束的情況下,屏幕又開始掃描下一幀的像素,那么就會出現(xiàn)如下圖中撕裂(tearing)的情況。 這個
    的頭像 發(fā)表于 11-21 16:01 ?1128次閱讀
    VSync的<b class='flag-5'>起源</b>是什么