[MetalKit]Introducing介紹Metal

本系列文章是對 http://metalkit.org 上面MetalKit內(nèi)容的全面翻譯和學(xué)習(xí).
目錄 http://www.reibang.com/p/64441ea99eba


Metal 框架是在WWDC 2014 發(fā)布了iOS版,在WWDC2015又發(fā)布了OS X和tvOS版. Metal是一個(gè)為計(jì)算機(jī)GPU編程的接口.主要優(yōu)點(diǎn)有:

  • 提供最底層的GPU訪問接入,因此它將減少其他框架中由于在CPUGPU之間傳遞數(shù)據(jù)而經(jīng)常引起的性能瓶頸.
  • 提供相比OpenGL高達(dá)10倍的繪制調(diào)用.然而,Metal并不能像OpenGL一樣跨平臺,所以它并不能替代OpenGL.
  • 允許運(yùn)行compute程序且性能等級相當(dāng)于類似技術(shù),如CUDAOpenCL.
  • 擁有可定制的著色語言,允許著色器預(yù)編譯,這樣運(yùn)行時(shí)可以更快.
  • 擁有內(nèi)置的內(nèi)存和資源管理,相比其他平臺.

因?yàn)?code>Metal不能用Xcode模擬器運(yùn)行,我們無法保證所有讀者都擁有A7或更新處理器的iOS設(shè)備,所以我們將創(chuàng)建一個(gè)OS X項(xiàng)目來代替.在Xcode中創(chuàng)建Cocoa Application.在故事板中,拖放一個(gè)LabelView Controller中.居中,拉大,確保能顯示2行文本.添加必要約束.你的故事板看起來應(yīng)該像這樣:

chapter01_1.png

下一步,到ViewController.swift中為剛才的label創(chuàng)建一個(gè)IBOutlet.你可以全名為label或其他你想要名字.最后,我們來寫些代碼.你的類應(yīng)該是這樣的:

import Cocoa

class ViewController: NSViewController {

    @IBOutlet weak var label: NSTextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()

        let devices = MTLCopyAllDevices()
        guard let _ = devices.first else {
            fatalError("Your GPU does not support Metal!")
        }
        label.stringValue = "Your system has the following GPU(s):\n"
        for device in devices {
            label.stringValue += "\(device.name!)\n"
        }
    }
}

讓我們看一下上面的代碼.首先我們需要import Metal因?yàn)槲覀冋{(diào)用了Metal框架中的MTLCopyAllDevices()函數(shù).然而,因?yàn)?code>Cocoa已經(jīng)導(dǎo)入了MetalAppKit框架以便我們使用NSViewController這樣的類,所以我們不需要另外再導(dǎo)入Metal.

接著,在viewDidLoad()中神奇的事情發(fā)生了.我們通過調(diào)用MTLCopyAllDevices()創(chuàng)建了一個(gè)Metal設(shè)備,然后我們簡單查詢它的名字并展示到label上.注意,MTLCopyAllDevices()只適用于OS X.對iOS/tvOS設(shè)備應(yīng)使用MTLCreateSystemDefaultDevice().一個(gè)device是對GPU的抽象,提供了一些方法和屬性,比如我們上面用到的name等.

運(yùn)行項(xiàng)目,你將能看到下面的輸出:

chapter01_2.png

很簡單的東西,但是現(xiàn)在你已經(jīng)學(xué)會了如何在盡可能底層的水平上同GPU"交談".我要感謝 @warrenm ,沒有他的引導(dǎo)和激勵這些教程將會是不存在的.在他的書Metal by Example中, 你可以找到大師高的質(zhì)量的OC版Metal項(xiàng)目.本文代碼source code已上傳至Github .
下次見!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挽荠,一起剝皮案震驚了整個(gè)濱河市作儿,隨后出現(xiàn)的幾起案子间影,更是在濱河造成了極大的恐慌,老刑警劉巖碎节,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡臭笆,警方通過查閱死者的電腦和手機(jī)捧韵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門市咆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人再来,你說我怎么就攤上這事。” “怎么了桨吊?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵孟岛,是天一觀的道長。 經(jīng)常有香客問我针炉,道長挠他,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任篡帕,我火速辦了婚禮殖侵,結(jié)果婚禮上摔蓝,老公的妹妹穿的比我還像新娘。我一直安慰自己愉耙,他們只是感情好贮尉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著朴沿,像睡著了一般猜谚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赌渣,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天魏铅,我揣著相機(jī)與錄音,去河邊找鬼坚芜。 笑死览芳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸿竖。 我是一名探鬼主播沧竟,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼缚忧!你這毒婦竟也來了悟泵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤闪水,失蹤者是張志新(化名)和其女友劉穎糕非,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體球榆,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朽肥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了持钉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衡招。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖右钾,靈堂內(nèi)的尸體忽然破棺而出蚁吝,到底是詐尸還是另有隱情,我是刑警寧澤舀射,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布窘茁,位于F島的核電站,受9級特大地震影響脆烟,放射性物質(zhì)發(fā)生泄漏山林。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望驼抹。 院中可真熱鬧桑孩,春花似錦、人聲如沸框冀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽明也。三九已至宣虾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間温数,已是汗流浹背绣硝。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撑刺,地道東北人鹉胖。 一個(gè)月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像够傍,于是被迫代替她去往敵國和親甫菠。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議王带。它實(shí)...
    香橙柚子閱讀 23,855評論 8 183
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫淑蔚、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,098評論 4 62
  • 這是李婷365日寫作計(jì)劃第241天的寫作內(nèi)容 這是第二對這本書寫讀書筆記愕撰,第一次讀來覺得作者說出了我的心里話,大部...
    婷婷玉立水墨畫閱讀 505評論 2 2
  • 新月上醋寝, 思情郎搞挣, 雪微漾, 心憂傷音羞。 識君龍城校軍場囱桨, 別時(shí)雁歸都營帳。 棄女紅裝把劍揚(yáng)嗅绰, 征戰(zhàn)千里在身旁舍肠。 素...
    營州布衣閱讀 331評論 2 6
  • 今夕又于西安稍駐,憶前夕宿此窘面,白雪翻飛翠语,今又來歸,風(fēng)雨兼程财边。感時(shí)光如電肌括,一閃而過,春去夏至酣难,再回首已是經(jīng)年;...
    黃健歌閱讀 664評論 0 3