2017-03-15 40 views
1

是否可以在沒有osx_ReadWriteTextureTier2的情況下就地處理MTLTexture金屬質感的就地處理

看來我可以設置兩個紋理參數是相同的紋理。這是支持的行爲?

具體來說,我不介意寫入後沒有紋理緩存更新。我只是想就地(和稀疏)修改一個3d紋理。這是內存禁止有兩個紋理。複製整個紋理的計算量很大,特別是當我只更新其中的一小部分時。

回答

2

根據文檔,無論功能可用性如何,在函數簽名中聲明兩個單獨的紋理參數(一次讀取,一次寫入)併爲兩者設置相同的紋理是無效的。

任何支持osx_GPUFamily1_v2的Mac都支持功能紋理讀寫(通過使用access::read_write聲明紋理)。

「層1」(沒有顯式常量)和osx_ReadWriteTextureTier2之間的區別在於後者支持用於讀寫紋理的附加像素格式。

如果您確定您的目標Mac不支持您需要的紋理讀寫操作(因爲您需要部署到OS X 10.11或因爲您在機器層使用了不兼容的像素格式),您可以一次在一個平面上操作紋理,從3D紋理中讀取數據,寫入2D紋理,然後將結果反射到3D紋理中的相應區域。這是更多的工作,但它將使用比內存少兩倍的內存。

+1

你能鏈接到文檔嗎?當我看時,我什麼也沒看見。謝謝! – Taylor

+0

這是[本頁]的函數資源讀寫部分的註釋(https://developer.apple.com/library/content/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/WhatsNewiniOS10tvOS10andOSX1012/WhatsNewiniOS10tvOS10andOSX1012.html#//apple_ref/ DOC/UID/TP40014221-CH14-SW1) – warrenm