国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

探索iOS之Metal編程指南

這篇具有很好參考價值的文章主要介紹了探索iOS之Metal編程指南。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

iOS推出Metal渲染庫為了取代OpenGL。Metal有自己的Shader語言,渲染效率比OpenGL高。在這里我們一起探索:Metal使用C++限制、預(yù)處理定義、動態(tài)鏈接配置、GPU編譯配置、設(shè)備坐標(biāo)系、視口坐標(biāo)系、紋理坐標(biāo)系、矢量類型、矩陣類型、采樣器狀態(tài)、矩陣相乘。

1、使用C++限制

C++14的一些特性無法在Metal使用,具體如下:

  • lambda表達(dá)式
  • dynamic_cast操作
  • 類型檢測
  • new和delete操作
  • noexcept操作
  • goto跳轉(zhuǎn)
  • register、thread_local關(guān)鍵字
  • virtual虛函數(shù)
  • 派生類
  • 異常處理

另外,不要在Metal代碼使用C++標(biāo)準(zhǔn)庫。函數(shù)指針在Metal2.3才支持。

2、預(yù)處理定義

預(yù)處理定義包括:Metal版本、在macOS或iOS平臺編譯。如下所示:

__METAL_VERSION__ // Set to the Metal language revision
__METAL_MACOS__   // Set if compiled with the macOS Metal language
__METAL_IOS__     // Set if compiled with the iOS Metal language
__METAL__         // Set if compiled with the unified Metal language

還有一些TARGET_OS的預(yù)定義:

TARGET_OS_MAC          // run on MacOS
TARGET_OS_OSX          // run on OSX
TARGET_OS_IPHONE       // run on devices or simulator
TARGET_OS_IOS          // run on iOS
TARGET_OS_TV           // run on Apple TV OS
TARGET_OS_MACCATALYST  // run on MacOS
TARGET_OS_SIMULATOR    // run on simulator

3、動態(tài)鏈接配置

Metal動態(tài)鏈接包括指定動態(tài)庫/靜態(tài)庫、安裝路徑,如下所示:

  • -dynamiclib:指定為動態(tài)庫
  • -install_name:動態(tài)庫安裝路徑

4、GPU編譯配置

在iOS16或macOS13以后,支持配置GPU編譯,具體配置選項(xiàng)如下:

-arch       // 指定系統(tǒng)架構(gòu)
-gpu-family // MTLGPUFamily架構(gòu)
-N          // 描述Metal腳本格式,后綴.mtlp-json

5、設(shè)備坐標(biāo)系

Normalized Device Coordinate歸一化設(shè)備坐標(biāo)系,簡稱NDC。由xyz三維空間構(gòu)成,其中z坐標(biāo)點(diǎn)在0.0和1.0之間。如下圖所示:

探索iOS之Metal編程指南?

6、視口坐標(biāo)系

光柵化階段把設(shè)備坐標(biāo)系轉(zhuǎn)換為視口坐標(biāo)系,測量單位為pixel像素,原點(diǎn)(0, 0)在左上角,往右下角增大。如下圖所示:

探索iOS之Metal編程指南?

7、紋理坐標(biāo)系

紋理坐標(biāo)系與視口坐標(biāo)系類似,只是紋理坐標(biāo)已被歸一化,范圍從0.0到1.0,中心點(diǎn)為(0.5, 0.5),如下圖所示:

探索iOS之Metal編程指南?

8、矢量類型

矢量類型包括:bool、char、short、int、long、half、float等,同時后面跟著數(shù)值(2、3、4)。值得注意的是,這里有內(nèi)存對齊,為2的n次方。這里以float展開,其他類型只列舉數(shù)值2,如下表所示:

type size alignment
float2 8 8
float3 16 16
float4 16 16
bool2 2 2
char2 2 2
short2 4 4
half2 4 4
int2 8 8
long2 16 16

9、矩陣類型

矩陣類型包括half和float,而mxn陣列包括2x2、2x3、2x4、3x2、3x3、3x4、4x2、4x3、4x4,如下圖所示:

探索iOS之Metal編程指南?

10、采樣器狀態(tài)

Sampler采樣器的狀態(tài)枚舉值,如下表所示:

變量 數(shù)值 描述
coord

normalized(默認(rèn))

pixel

指定紋理坐標(biāo)為歸一化或像素
address

repeat

mirrored_repeat

clamp_to_edge

clamp_to_zero

clamp_to_border

紋理坐標(biāo)的地址模式
border_color

transparent_black(默認(rèn))

opaque_black

opaque_white

邊界顏色
filter

nearest(默認(rèn))

linear

magnification和minification

過濾模式

mag_filter

nearest(默認(rèn))

linear

magnification過濾模式
mig_filter

nearest(默認(rèn))

linear

minification過濾模式
mip_filter

nearest(默認(rèn))

linear

mipmap過濾模式
compare_func

never(默認(rèn))

less /?less_equal

greater /?greater_equal

equal /?not_equal

always

設(shè)置比較函數(shù)

11、矩陣相乘

矩陣相乘有左乘與右乘的區(qū)別,類型包括:scalar乘以matrix、matrix乘以scalar、vector乘以matrix、matrix乘以vector、matrix乘以matrix。

參考鏈接:Metal-Shading-Language-Specification文章來源地址http://www.zghlxwxcb.cn/news/detail-482170.html

到了這里,關(guān)于探索iOS之Metal編程指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ChatGPT 推出 iOS 應(yīng)用,最新最全的使用教程

    ChatGPT 推出 iOS 應(yīng)用,最新最全的使用教程

    先說重點(diǎn),再說體驗(yàn): 1、目前只有 iOS App,理論上后面應(yīng)該會有 Android 2、iOS App 目前只有美區(qū),可以直接用美區(qū) AppleID 搜索「OpenAI ChatGPT」,或者直接訪問下面鏈接: ?App?Store 上的“ChatGPT” 3、最大的優(yōu)勢是可以用蘋果訂閱直接升級成 ChatGPT Plus,可以用 GPT4.0 模型了。 之前

    2024年02月08日
    瀏覽(19)
  • 微軟推出iOS 版Copilot App 讓你免費(fèi)用GPT-4

    微軟推出iOS 版Copilot App 讓你免費(fèi)用GPT-4

    微軟幾天前在Android 平臺推出獨(dú)立的Copilot App 后,很快地又推出了適用于iOS 和iPad 本版的Copilot App,現(xiàn)在已經(jīng)于蘋果的App Store 上架,讓iPhone 和iPad 使用者也能快速接觸到這款人工智慧助手,通過輸入查詢來獲得由OpenAI 的GPT-4生成的回應(yīng)。 相較于使用較舊的GPT-3.5 免費(fèi)版ChatGPT,

    2024年02月03日
    瀏覽(28)
  • Google IO 2023推出Android Studio官方AI工具Studio Bot

    Google IO 2023推出Android Studio官方AI工具Studio Bot

    在2023 Google I/O大會上,Google 宣布在 Android Studio 中推出了一款名為 Studio Bot 的新 AI 功能,它將為開發(fā)者提供更高效、智能的開發(fā)體驗(yàn)。Studio Bot 是一個基于機(jī)器學(xué)習(xí)的助手,可以幫助開發(fā)者處理重復(fù)性的任務(wù),提高開發(fā)效率。 其中,Studio Bot 最為強(qiáng)大的功能之一是它能夠自動

    2024年02月05日
    瀏覽(19)
  • 同步推送?蘋果計(jì)劃本月推出 iOS17和iPadOS17,你的手機(jī)支持嗎?

    同步推送?蘋果計(jì)劃本月推出 iOS17和iPadOS17,你的手機(jī)支持嗎?

    據(jù)報道,蘋果公司計(jì)劃在本月推出 iOS 17 和 iPadOS 17 正式版更新。與去年不同的是,這次更新將同時發(fā)布,而不是分別發(fā)布。根據(jù)彭博社的一位消息人士馬克?古爾曼的說法,蘋果公司認(rèn)為 iOS 17 和 iPadOS 17 的第八個測試版已經(jīng)非常接近最終版本,除非有意外情況發(fā)生,否則將

    2024年02月09日
    瀏覽(15)
  • iOS 17 正式版預(yù)計(jì) 9 月中下旬發(fā)布,部分新功能延后推出

    iOS 17 正式版預(yù)計(jì) 9 月中下旬發(fā)布,部分新功能延后推出

    蘋果公司預(yù)計(jì)將在 9 月中下旬推出 iOS 17 正式版,iPhone XS 及更新的機(jī)型可免費(fèi)更新。這次更新包含了許多新功能,但 是 根據(jù)蘋果公司的網(wǎng)站顯示,并不是所有的功能都會立即可用。蘋果表示 有一些功能 “將在今年晚些時候推出” , 比如:日記應(yīng)用、 Apple Music 協(xié)作播放列表

    2024年02月12日
    瀏覽(91)
  • 【iOS】—— 離屏渲染

    UIView繼承自UIResponder ,可以處理系統(tǒng)傳遞過來的事件,如:UIApplication、UIViewController、UIView,以及所有從UIView派生出來的UIKit類。每個UIView內(nèi)部都有一個CALayer提供內(nèi)容的繪制和顯示,并且作為內(nèi)部RootLayer的代理視圖。 CALayer繼承自NSObject類 ,負(fù)責(zé)顯示UIView提供的內(nèi)容contents。

    2024年02月14日
    瀏覽(20)
  • iOS播放/渲染/解析MIDI

    iOS播放/渲染/解析MIDI

    MIDI:樂器數(shù)字接口, Musical Instrument Digital Interface。 MIDI 是計(jì)算機(jī)能理解的樂譜,計(jì)算機(jī)和電子樂器都可以處理的樂器格式。 MIDI 不是音頻信號,不包含 pcm buffer。 通過音序器 sequencer,結(jié)合音頻數(shù)據(jù) / 樂器 ,播放 MIDI Event 數(shù)據(jù) ( 通過音色庫 SoundFont,播放樂器的聲音。iOS上一

    2023年04月24日
    瀏覽(15)
  • iOS知識點(diǎn) ---- 離屏渲染

    iOS 中的離屏渲染(Off-Screen Rendering)是指在繪制某些復(fù)雜圖形或特殊效果時,系統(tǒng)無法直接在當(dāng)前屏幕緩沖區(qū)進(jìn)行繪制,而是需要先在額外的離屏緩沖區(qū)(Off-Screen Buffer)中完成渲染工作,然后再將結(jié)果混合到屏幕緩沖區(qū)的過程。離屏渲染往往發(fā)生在需要進(jìn)行特定圖形操作(

    2024年04月16日
    瀏覽(40)
  • Android與IOS渲染流程對比

    目錄 Android CPU計(jì)算圖元信息 GPU干預(yù) 幾何階段等后處理 Android APP通過WindowManager統(tǒng)一提供所有Surface的緩沖區(qū)【不管是SurfaceView還是普通的布局流程都會將數(shù)據(jù)提交到Surface的BufferQuene中】 Java中的Surface是null,最終都是由Native層的Surface處理。 Native中的Surface持有的一個接口用于和

    2024年02月05日
    瀏覽(24)
  • iOS渲染卡死應(yīng)該如何解決

    1)iOS渲染卡死應(yīng)該如何解決 2)C#傳給C++的Byte數(shù)組如何釋放 3)EAssetBundle.Unload(true)觸發(fā)長時間卡頓的原因 這是第358篇UWA技術(shù)知識分享的推送,精選了UWA社區(qū)的熱門話題,涵蓋了UWA問答、社區(qū)帖子等技術(shù)知識點(diǎn),助力大家更全面地掌握和學(xué)習(xí)。 Q:想問問大家是否有遇到過iOS渲

    2024年02月05日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包