<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Metal 開(kāi)發(fā) | 使用 C++ 進(jìn)行接口調(diào)用~~

          共 1831字,需瀏覽 4分鐘

           ·

          2021-11-29 10:29

          文章首發(fā)博客:https://glumes.com
          前兩天在群里面看到大佬轉(zhuǎn)發(fā)一篇文章:Getting started with Metal-cpp 。

          鏈接在此:

          https://developer.apple.com/metal/cpp/

          文章大意就是:一頓操作安排上,蘋(píng)果現(xiàn)在支持用 C++ 開(kāi)發(fā) Metal 了。

          眾所周知,在做渲染后端開(kāi)發(fā)時(shí),OpenGL 和 Vulkan 都是支持 C++ 開(kāi)發(fā)的,可以直接定義 C++ 相關(guān)接口并根據(jù)平臺(tái)特性去實(shí)現(xiàn)。

          而 Metal 則需要支持 Objective-C 才行了,編寫(xiě)的文件也是 .m 文件格式,但是現(xiàn)在就可以直接寫(xiě) C++ 的渲染實(shí)現(xiàn)了。

          前置準(zhǔn)備

          根據(jù)官方文章中的內(nèi)容,首先要確保 Xcode 版本在 9.3 以上,并且要使用 C++17 的語(yǔ)法。

          同時(shí)要下載好 Metal 對(duì)應(yīng)的 C++ 頭文件(metal-cpp),鏈接地址如下:

          https://developer.apple.com/metal/cpp/files/metal-cpp_macOS12_iOS15.zip

          創(chuàng)建工程

          創(chuàng)建一個(gè) macOS 上的工程,可以是 App 工程也可以是命令行工程,主要是驗(yàn)證一下環(huán)境配置是否正確。

          接下來(lái)要把下載好的 Metal 頭文件(metal-cpp)放在工程搜索路徑中的,如下圖所示:

          然后把 C++ 版本改成 std=c++17 。

          接下來(lái)要把 framework 依賴包含進(jìn)來(lái):

          主要是:

          • Foundation.framework
          • QuartzCore.framework
          • Metal.framework

          把以上的環(huán)境依賴都搞定之后,就可以進(jìn)行代碼開(kāi)發(fā)了。

          代碼開(kāi)發(fā)

          首先需要把 Metal 相關(guān)頭文件包含進(jìn)來(lái),由于它只是一個(gè)頭文件的庫(kù),要生成對(duì)應(yīng)的實(shí)現(xiàn),還要把一些宏配置加上。

          核心就是如下一段代碼,

          #define?NS_PRIVATE_IMPLEMENTATION
          #define?CA_PRIVATE_IMPLEMENTATION
          #define?MTL_PRIVATE_IMPLEMENTATION
          #include?
          #include?
          #include?

          在其他需要用到 Metal 相關(guān)對(duì)象的地方,就只用包含三個(gè)頭文件就好了。

          三個(gè)頭文件都是配套一起出現(xiàn)的,當(dāng)然也可以只包含一個(gè)頭文件就行。

          在下載 metal-cpp 的 SingleHeader 文件夾下,有一個(gè) MakeSingleHeader.py 腳本, 運(yùn)行它來(lái)生成:

          ./SingleHeader/MakeSingleHeader.py?Foundation/Foundation.hpp?QuartzCore/QuartzCore.hpp?Metal/Metal.hpp

          這樣一來(lái),在 SingleHeader 文件夾下會(huì)生成 Metal.hpp 文件,它包含了所有會(huì)用到的對(duì)象,只包含它一個(gè)就好了。

          #define?NS_PRIVATE_IMPLEMENTATION
          #define?CA_PRIVATE_IMPLEMENTATION
          #define?MTL_PRIVATE_IMPLEMENTATION
          #include?

          成功引入了 Metal 頭文件就可以進(jìn)行開(kāi)發(fā)了,官方也給出了一個(gè) Demo 工程,可以運(yùn)行下這個(gè)工程:

          https://developer.apple.com/documentation/metal/rendering_a_scene_with_deferred_lighting_in_c

          另外,用 Metal 做渲染引擎的開(kāi)發(fā),比用 OpenGL 寫(xiě)要快多了,因?yàn)樗旧砭吞峁┝撕芏喾庋b工具類,比 OpenGL 從零開(kāi)始寫(xiě)要省不少事,而且說(shuō)不定性能還強(qiáng)不少。


          技術(shù)交流,歡迎加我微信:ezglumes ,拉你入技術(shù)交流群。

          私信領(lǐng)取相關(guān)資料

          推薦閱讀:

          音視頻開(kāi)發(fā)工作經(jīng)驗(yàn)分享 || 視頻版

          OpenGL ES 學(xué)習(xí)資源分享

          開(kāi)通專輯 | 細(xì)數(shù)那些年寫(xiě)過(guò)的技術(shù)文章專輯

          Android NDK 免費(fèi)視頻在線學(xué)習(xí)!??!

          你想要的音視頻開(kāi)發(fā)資料庫(kù)來(lái)了

          推薦幾個(gè)堪稱教科書(shū)級(jí)別的 Android 音視頻入門(mén)項(xiàng)目

          覺(jué)得不錯(cuò),點(diǎn)個(gè)在看唄~


          瀏覽 60
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  婷婷国产wwww | 翔田千里无码破解 | 日本www在线中文字幕 | 麻豆成人传媒网,一区二区三区四区 | 欧美熟女BB|