一些基礎知識
臨時對象(創(chuàng)建和銷毀是廉價的,它們的創(chuàng)建方法都返回 autoreleased對象):
- Command Buffers
- Command Encoders 代碼中不需要持有潭流。
高消耗對象(在性能相關的代碼里應該盡量重用它,避免反復創(chuàng)建), 代碼中需長期持有:
- Command Queues
- Buffers
- Textures
- Compute States
- Render Pipeline States导坟。
視頻圖像格式
Planar: 平面城菊;BiPlanar:雙平面
平面/雙平面主要應用在yuv上。uv分開存儲的為Planar,反之是BiPlanar盗忱。
所以,kCVPixelFormatType_420YpCbCr8PlanarFullRange是420p羊赵,kCVPixelFormatType_420YpCbCr8BiPlanarFullRange是nv12趟佃。VideoRange和FullRange的區(qū)別在于數(shù)值的范圍,F(xiàn)ullRange比VideoRange大一些昧捷,顏色也更豐富一些揖闸。
常用視頻像素格式NV12、NV2料身、I420汤纸、、Yv12芹血、YUYV
BGRA: a single plane where the blue, green, red and alpha values are stored in a 32 bit integer each
420YpCbCr8BiPlanarFullRange: Two planes, the first containing a byte for each pixel with the Y (luma) value, the second containing the Cb and Cr (chroma) values for groups of pixels
420YpCbCr8BiPlanarVideoRange: The same as 420YpCbCr8BiPlanarFullRange but the Y values are restricted to the range 16 – 235 (for historical reasons)FullRange和VideoRange的唯一區(qū)別是VideoRange的Y的范圍是16 – 235贮泞。
學習資料
此博主還有很多其他系列文章值得學習,感謝:
Metal框架詳細解析(一)—— 基本概覽
Metal框架詳細解析(二) —— 器件和命令(一)
Metal框架詳細解析(三) —— 渲染簡單的2D三角形(一)
Metal框架詳細解析(四) —— 關于GPU Family 4(一)
Metal框架詳細解析(五) —— 關于GPU Family 4之關于Imageblocks(二)
Metal框架詳細解析(六) —— 關于GPU Family 4之關于Tile Shading(三)
Metal框架詳細解析(七) —— 關于GPU Family 4之關于光柵順序組(四)
Metal框架詳細解析(八) —— 關于GPU Family 4之關于增強的MSAA和Imageblock采樣覆蓋控制(五)
Metal框架詳細解析(九) —— 關于GPU Family 4之關于線程組共享(六)
Metal框架詳細解析(九) —— 關于GPU Family 4之關于線程組共享(六)
Metal框架詳細解析(十一) —— 基本組件之器件選擇 - 圖形渲染的器件選擇(二)
Metal框架詳細解析(十二) —— 基本組件之器件選擇 - 計算處理的設備選擇(三)
Metal框架詳細解析(十三) —— 計算處理(一)
Metal框架詳細解析(十四) —— 計算處理之你好幔烛,計算(二)
Metal框架詳細解析(十五) —— 計算處理之關于線程和線程組(三)
Metal框架詳細解析(十六) —— 計算處理之計算線程組和網格大锌胁痢(四)
Metal框架詳細解析(十七) —— 工具、分析和調試(
Metal框架詳細解析(十八) —— 工具饿悬、分析和調試之Metal GPU Capture(二)
Metal框架詳細解析(十九) —— 工具令蛉、分析和調試之GPU活動監(jiān)視器(三)
Metal框架詳細解析(二十) —— 工具、分析和調試之關于Metal著色語言文件名擴展名、使用Metal的命令行工具構建庫和標記Metal對象和命令(四)
Metal框架詳細解析(二十一) —— 基本課程之基本緩沖區(qū)(一)
Metal框架詳細解析(二十二) —— 基本課程之基本紋理(二)
Metal框架詳細解析(二十三) —— 基本課程之CPU和GPU同步(三)
Metal框架詳細解析(二十四) —— 基本課程之參數(shù)緩沖 - 基本參數(shù)緩沖(四)
Metal框架詳細解析(二十五) —— 基本課程之參數(shù)緩沖 - 帶有數(shù)組和資源堆的參數(shù)緩沖區(qū)(五)
Metal框架詳細解析(二十六) —— 基本課程之參數(shù)緩沖 - 具有GPU編碼的參數(shù)緩沖區(qū)(六)
Metal框架詳細解析(二十七) —— 高級技術之圖層選擇的反射(一)
Metal框架詳細解析(二十八) —— 高級技術之使用專用函數(shù)的LOD(一)
Metal框架詳細解析(二十九) —— 高級技術之具有參數(shù)緩沖區(qū)的動態(tài)地形(一)
Metal框架詳細解析(三十) —— 延遲照明(一)
Metal框架詳細解析(三十一) —— 在視圖中混合Metal和OpenGL渲染(一)
Metal框架詳細解析(三十二) —— Metal渲染管道教程(一)
Metal框架詳細解析(三十三) —— Metal渲染管道教程(二)
Metal框架詳細解析(三十四) —— Hello Metal珠叔! 一個簡單的三角形的實現(xiàn)(一)
Metal框架詳細解析(三十五) —— Hello Metal蝎宇! 一個簡單的三角形的實現(xiàn)(二)
Metal框架詳細解析(三十六) —— Metal編程指南之概覽(一)
Metal框架詳細解析(三十七) —— Metal編程指南之基本Metal概念(二)
Metal框架詳細解析(三十八) —— Metal編程指南之命令組織和執(zhí)行模型(三)
Metal框架詳細解析(三十九) —— Metal編程指南之資源對象:緩沖區(qū)和紋理(四)
Metal框架詳細解析(四十) —— Metal編程指南之函數(shù)和庫(五)
Metal框架詳細解析(四十一) —— Metal編程指南之圖形渲染:渲染命令編碼器之Part 1(六)
Metal框架詳細解析(四十二) —— Metal編程指南之圖形渲染:渲染命令編碼器之Part 2(七)
Metal框架詳細解析(四十三) —— Metal編程指南之數(shù)據(jù)并行計算處理:計算命令編碼器(八)
Metal框架詳細解析(四十四) —— Metal編程指南之緩沖和紋理操作:Blit命令編碼器(九)
Metal框架詳細解析(四十五) —— Metal編程指南之Metal工具(十)
Metal框架詳細解析(四十六) —— Metal編程指南之Tessellation(十一)
Metal框架詳細解析(四十七) —— Metal編程指南之資源堆(十二)
Metal框架詳細解析(四十八) —— 將項目從OpenGL轉化到Metal(一)
Metal框架詳細解析(四十九) —— 將項目從OpenGL轉化到Metal(二)
Metal框架詳細解析(五十) —— 將項目從OpenGL轉化到Metal(三)
視頻處理相關(一) —— 視頻深度相關處理簡單示例(一)
視頻處理相關(二) —— 基于AVFoundation的視頻拼接處理(一)
Metal Performance Shaders框架詳細解析(一)—— 基本概覽
Metal 系列教程(1)- Metal 介紹及基本使用
Metal 系列教程(2)- Metal 實現(xiàn) LUT 濾鏡
Metal 系列教程(3)- 性能優(yōu)化點
Metal入門教程(一)圖片繪制
Metal入門教程(二)三維變換
Metal入門教程(三)攝像頭采集渲染
Metal入門教程(四)灰度計算
Metal入門教程(五)視頻渲染
Metal入門教程(六)邊界檢測
Metal入門教程(七)天空盒全景
Metal入門教程(八)Metal與OpenGL ES交互
Metal入門教程總結
【Metal引擎剖析(一):MTLRenderPassDescriptor和MTLVertexDescriptor】
【Metal引擎剖析(二):傳統(tǒng)延遲渲染和TBDR】
【Metal引擎剖析(三):OIT順序無關透明渲染Imageblo
【Metal引擎剖析(四):基于MPS的GPU加速光線追蹤(Accelerating Ray Tracing)】
【Metal引擎剖析(五):Forward+ with Tile Shading】
Metal2新特性:光柵順序組(ROG,Raster Order Groups)