亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity中如何實現Texture

發布時間:2022-01-05 14:16:05 來源:億速云 閱讀:431 作者:小新 欄目:大數據

這篇文章主要介紹Unity中如何實現Texture,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

了解Texture2D

Unity中如何實現Texture

如上圖,Texture2D是一張二維圖片
是由一顆一顆像素組成的。
通常是由低到高,由左到右排列的。
如果想要通過代碼操作像素,我們必須要知道像素的坐標位置,現在我們來驗證下是否真的如此排列。

Unity中如何實現Texture


我們通過簡短的代碼,NEW一個圖片,并且根據X,Y軸對應R,G通道,逐像素賦值。我們將得到一張紅綠漸變圖,如下。

Unity中如何實現Texture


根據圖片的顏色漸變過程,我們可以確信,像素排列順序是和我們預測的一樣。

  • TextureFormat是什么


TextureFormat為貼圖的類型,ARGB32位,代表有ARGB4個通道,每個通道的顏色有8位,對應的還有A8,RGB24等。任何圖片從本質上就是這樣的。
而常見的JPG,PNG等是操作系統采用的壓縮/非壓縮讀取格式,ETC/DDS為圖形接口讀取的壓縮格式。

  • 賦值完后為什么要Apply


因為在貼圖更改像素時并不是直接對現在的內存進行更改,而是在另外一個內存空間中更改,這時候GPU還會實時讀取舊的貼圖位置。
當Apply后,更改后的內容才會應用到現在的內存中。

  • 所有的圖片的像素排列順序都一樣嗎?


事實上OpenGL和DX在UV方向和取值上是不同的,在此我們應該感謝Unity3D為我們做的那些事,讓一切變得簡單。

制作一個簡單的筆刷

最終效果

Unity中如何實現Texture

實現輪廓

Unity中如何實現Texture

我們對上面的代碼稍作修改。
我們在第一個紅線引入一張貼圖,第二個紅線,將像素乘以這張貼圖對應位置的alpha通道。
在色階上每個通道是8位,0-255,但在計算時為浮點數。0~1。
所以如果alpha為0,任何顏色乘以他,結果都為0。
通過以上代碼,我們實現如下效果:

Unity中如何實現Texture

這張貼圖是張Alpha通道為0和1的通道,1為有顏色,0自然就沒有顏色。也可以通過0-1之間的值實現漸變。
同樣的,因為只用到一個通道,我們可以將它壓縮為一張Alpha8的單通道8位貼圖,來節省空間。

實現紋理

Unity中如何實現Texture

我們再次對上述代碼進行更改,同樣引入一張貼圖來做紋理。
這次我們進行顏色相乘,因為顏色為浮點值,所以他們乘后的結果不會大于1,也不會小于0。
而重載運算符,在*的過程中,幫我們把RGBA通道一一對應的運算。
這里我們用到了相乘,很多人在用圖像軟件時,會遇到,相乘,相加,相除,相減等詞匯。
一開始會很納悶,為什么要這樣命名。現在我們知道了,他們是在像素之間的數學運算關系。

Unity中如何實現Texture

以上是“Unity中如何實現Texture”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平乡县| 广德县| 沾益县| 正镶白旗| 闽清县| 即墨市| 大新县| 唐河县| 益阳市| 和龙市| 射阳县| 苍溪县| 克什克腾旗| 蓬莱市| 山丹县| 赣州市| 安塞县| 乌兰浩特市| 陆丰市| 岚皋县| 皮山县| 黑龙江省| 曲阜市| 平乐县| 敦煌市| 昭通市| 新津县| 从化市| 龙口市| 漳平市| 敦化市| 建湖县| 正定县| 错那县| 微山县| 颍上县| 正镶白旗| 刚察县| 宁津县| 鸡西市| 同心县|