Metal框架詳細解析(四十四) —— Metal編程指南之緩沖和紋理操作:Blit命令編碼器(九)

版本記錄

版本號 時間
V1.0 2018.11.11 星期日

前言

很多做視頻和圖像的,相信對這個框架都不是很陌生,它渲染高級3D圖形,并使用GPU執行數據并行計算。接下來的幾篇我們就詳細的解析這個框架。感興趣的看下面幾篇文章。
1. Metal框架詳細解析(一)—— 基本概覽
2. Metal框架詳細解析(二) —— 器件和命令(一)
3. Metal框架詳細解析(三) —— 渲染簡單的2D三角形(一)
4. Metal框架詳細解析(四) —— 關于GPU Family 4(一)
5. Metal框架詳細解析(五) —— 關于GPU Family 4之關于Imageblocks(二)
6. Metal框架詳細解析(六) —— 關于GPU Family 4之關于Tile Shading(三)
7. Metal框架詳細解析(七) —— 關于GPU Family 4之關于光柵順序組(四)
8. Metal框架詳細解析(八) —— 關于GPU Family 4之關于增強的MSAA和Imageblock采樣覆蓋控制(五)
9. Metal框架詳細解析(九) —— 關于GPU Family 4之關于線程組共享(六)
10. Metal框架詳細解析(十) —— 基本組件(一)
11. Metal框架詳細解析(十一) —— 基本組件之器件選擇 - 圖形渲染的器件選擇(二)
12. Metal框架詳細解析(十二) —— 基本組件之器件選擇 - 計算處理的設備選擇(三)
13. Metal框架詳細解析(十三) —— 計算處理(一)
14. Metal框架詳細解析(十四) —— 計算處理之你好,計算(二)
15. Metal框架詳細解析(十五) —— 計算處理之關于線程和線程組(三)
16. Metal框架詳細解析(十六) —— 計算處理之計算線程組和網格大小(四)
17. Metal框架詳細解析(十七) —— 工具、分析和調試(一)
18. Metal框架詳細解析(十八) —— 工具、分析和調試之Metal GPU Capture(二)
19. Metal框架詳細解析(十九) —— 工具、分析和調試之GPU活動監視器(三)
20. Metal框架詳細解析(二十) —— 工具、分析和調試之關于Metal著色語言文件名擴展名、使用Metal的命令行工具構建庫和標記Metal對象和命令(四)
21. Metal框架詳細解析(二十一) —— 基本課程之基本緩沖區(一)
22. Metal框架詳細解析(二十二) —— 基本課程之基本紋理(二)
23. Metal框架詳細解析(二十三) —— 基本課程之CPU和GPU同步(三)
24. Metal框架詳細解析(二十四) —— 基本課程之參數緩沖 - 基本參數緩沖(四)
25. Metal框架詳細解析(二十五) —— 基本課程之參數緩沖 - 帶有數組和資源堆的參數緩沖區(五)
26. Metal框架詳細解析(二十六) —— 基本課程之參數緩沖 - 具有GPU編碼的參數緩沖區(六)
27. Metal框架詳細解析(二十七) —— 高級技術之圖層選擇的反射(一)
28. Metal框架詳細解析(二十八) —— 高級技術之使用專用函數的LOD(一)
29. Metal框架詳細解析(二十九) —— 高級技術之具有參數緩沖區的動態地形(一)
30. Metal框架詳細解析(三十) —— 延遲照明(一)
31. Metal框架詳細解析(三十一) —— 在視圖中混合Metal和OpenGL渲染(一)
32. Metal框架詳細解析(三十二) —— Metal渲染管道教程(一)
33. Metal框架詳細解析(三十三) —— Metal渲染管道教程(二)
34. Metal框架詳細解析(三十四) —— Hello Metal! 一個簡單的三角形的實現(一)
35. Metal框架詳細解析(三十五) —— Hello Metal! 一個簡單的三角形的實現(二)
36. Metal框架詳細解析(三十六) —— Metal編程指南之概覽(一)
37. Metal框架詳細解析(三十七) —— Metal編程指南之基本Metal概念(二)
38. Metal框架詳細解析(三十八) —— Metal編程指南之命令組織和執行模型(三)
39. Metal框架詳細解析(三十九) —— Metal編程指南之資源對象:緩沖區和紋理(四)
40. Metal框架詳細解析(四十) —— Metal編程指南之函數和庫(五)
41. Metal框架詳細解析(四十一) —— Metal編程指南之圖形渲染:渲染命令編碼器之Part 1(六)
42. Metal框架詳細解析(四十二) —— Metal編程指南之圖形渲染:渲染命令編碼器之Part 2(七)
43. Metal框架詳細解析(四十三) —— Metal編程指南之數據并行計算處理:計算命令編碼器(八)

Buffer and Texture Operations: Blit Command Encoder - 緩沖和紋理操作:Blit命令編碼器

MTLBlitCommandEncoder提供了在資源(緩沖區和紋理)之間復制數據的方法。 數據復制操作對于圖像處理和紋理效果(例如模糊或反射)可能是必需的。 它們可用于訪問在屏幕外渲染的圖像數據。

要執行數據復制操作,首先通過調用MTLCommandBufferblitCommandEncoder方法創建MTLBlitCommandEncoder對象。 然后調用下面描述的MTLBlitCommandEncoder方法將命令編碼到命令緩沖區。


Copying Data in GPU Memory Between Resource Objects - 在資源對象之間復制GPU內存中的數據

以下MTLBlitCommandEncoder方法在資源對象之間復制圖像數據:兩個緩沖區對象之間,兩個紋理對象之間以及緩沖區和紋理之間。

1. Copying Data Between Two Buffers - 在兩個緩沖區之間復制數據

方法copyFromBuffer:sourceOffset:toBuffer:destinationOffset:size:在兩個緩沖區之間復制數據:從源緩沖區到目標緩沖區toBuffer。如果源和目標是相同的緩沖區,并且正在復制的范圍重疊,則結果是未定義的。

2. Copying Data from a Buffer to a Texture - 將數據從緩沖區復制到紋理

方法copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:將圖像數據從源緩沖區復制到目標紋理toTexture

3. Copying Data Between Two Textures - 在兩個紋理之間復制數據

方法copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:復制兩個紋理之間的圖像數據區域:從源紋理的單個立方體切片和mipmap級別到目標紋理toTexture

4. Copying Data from a Texture to a Buffer - 將數據從紋理復制到緩沖區

方法copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:將圖像數據的區域從單個立方體切片和源紋理的mipmap級別復制到目標緩沖區toBuffer


Generating Mipmaps - 生成Mipmap

MTLBlitCommandEncodergenerateMipmapsForTexture:方法從基礎級紋理圖像開始自動為給定紋理生成mipmapgenerateMipmapsForTexture:為所有mipmap級別創建縮放圖像,直到最大級別。

有關如何確定mipmap數量和每個mipmap大小的詳細信息,請參閱Slices


Filling the Contents of a Buffer - 填充緩沖區的內容

MTLBlitCommandEncoder的方法fillBuffer:range:value:在給定緩沖區的指定range內的每個字節中存儲8位常量value


Ending Encoding for the Blit Command Encoder - Blit命令編碼器的結束編碼

要結束blit命令編碼器的編碼命令,請調用endEncoding。 在結束上一個命令編碼器之后,您可以創建任何類型的新命令編碼器,以將其他命令編碼到命令緩沖區中。

后記

本篇主要介紹了Metal編程指南之緩沖和紋理操作:Blit命令編碼器,感興趣的給個贊或者關注~~~,今天是雙11了,是我們單身狗的節日,我很快樂(有點勉強)!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容