優(yōu)秀博客
https://mubu.com/doc/CJSil5TLHm
疑難問題:
https://docs.qq.com/sheet/DVHd1WWNrUXpVekJJ?tab=BB08J2
OpenGL 名詞:
Context上下文:狀態(tài)機(jī)(機(jī)器)。OpenGL指令基礎(chǔ)指孤、記錄功能是否打開贬堵。不同線程可創(chuàng)建不同上下文结洼,共享紋理、緩沖區(qū)等資源松忍。
渲染: 圖片/按鈕/視頻 -> 繪制到屏幕的過程 解碼圖片->渲染到屏幕。
頂點(diǎn)數(shù)組: OpenGL沒有正方形鸣峭,存儲(chǔ)到內(nèi)存之中成為頂點(diǎn)數(shù)組。只支持點(diǎn)楣铁、線、三角形盖腕,正方形是由兩個(gè)三角形組合成的浓镜,所以正方形有六個(gè)頂點(diǎn)溃列。頂點(diǎn)數(shù)據(jù)存到內(nèi)存中膛薛,GPU調(diào)度存在《帶寬》問題听隐。
頂點(diǎn)緩存區(qū): 如果要GPU快速調(diào)度頂點(diǎn)數(shù)據(jù)哄啄,頂點(diǎn)數(shù)據(jù)存儲(chǔ)到GPU的顯存中。
內(nèi)存 CPU 有一級(jí)二級(jí)三級(jí)緩存 咨跌,GPU顯存!
(顯示前提將png圖片解壓成位圖禽车!png、jpg都是壓縮圖片)
位圖: 120120 = 14400(像素點(diǎn)) ->RGBA存儲(chǔ)->144004(字節(jié))->位圖(紋理)殉摔。
映射: 對(duì)應(yīng)關(guān)系记焊。
管線: 流水線 :肥皂水 - 模具 - 肥皂塊。
固定管線: 對(duì)應(yīng)非常多模具(固定著色器)遍膜,形成結(jié)果腐缤。肥皂水 - 模具( 對(duì)應(yīng)模具/固定著色器) - 肥皂塊肛响。
可編程管線: 修改系統(tǒng)api。肥皂水 - 模具(自定義變成模具GLSL語(yǔ)法驅(qū)使GPU) - 肥皂塊特笋。
著色器: 函數(shù)/方法供CPU使用巾兆,著色器shader(代碼塊)供GPU使用。著色器就是方法
固定著色器: 也稱存儲(chǔ)著色器角塑,蘋果API,只能調(diào)用圃伶,由OpenGL提供。
自定義著色器: 可以進(jìn)行自定義(自己基于GLSL語(yǔ)法編寫代碼段)
頂點(diǎn)著色器: 用來處理頂點(diǎn)相關(guān)的代碼窒朋,1、確定位置侥猩。2、縮放唧取、偏移慷嗜、旋轉(zhuǎn)悦陋。3策幼、手機(jī)屏幕為2D锚烦,顯示3D掸犬,3D->2D經(jīng)過投影換算袜漩。
片元/像素 著色器: 片元(像素點(diǎn))湾碎,處理一個(gè)一個(gè)像素點(diǎn),120*120 要處理14400次介褥,GPU并行運(yùn)算递惋。(如果是CPU則麻煩)
片元著色器拓展:圖片飽和度調(diào)整溢陪,需要片元著色器懟像素點(diǎn)一個(gè)一個(gè)修改。
其他的著色器(幾何形真、曲面細(xì)分)自定義不了
能自定義的著色器僅有兩個(gè):頂點(diǎn)著色器、片元著色器邓馒。
GSLS: GPU只認(rèn)GLSL語(yǔ)言/shading language(OpenGL標(biāo)準(zhǔn))
光柵化: 頂點(diǎn)數(shù)據(jù)轉(zhuǎn)化為片元數(shù)據(jù)。兩個(gè)過程(不可編程)圖源裝配 1光酣、確定圖形在像素的范圍脉课;2、顏色附著下翎。
頂點(diǎn)著色器處理頂點(diǎn)、片元著色器處理像素视事。
紋理: 多數(shù)指圖片,壓縮圖片(.png)轉(zhuǎn)化為位圖 .tga,在OpenGL移動(dòng)端中png轉(zhuǎn)位圖俐东。
混合: Layer。 2個(gè)圖層 粉紅色0.5蚌吸、 藍(lán)色0.2,疊加通過混合計(jì)算羹唠,組透明度會(huì)觸發(fā)離屏渲染娄昆。
變換矩陣: 評(píng)議、旋轉(zhuǎn)萌焰、縮放(《線性代數(shù)》、《3D數(shù)學(xué)》)
投影矩陣: 3D圖形轉(zhuǎn)換為二維坐標(biāo)
渲染上屏/交換緩沖區(qū):
2D笛卡爾坐標(biāo): x扒俯、y
3D笛卡爾坐標(biāo)系: x一疯、y夺姑、z
視口: 坐標(biāo)系對(duì)應(yīng)屏幕區(qū)域的范圍,可設(shè)置 代碼:glViewport
投影方式: 有且只有兩種 1盏浙、正(平行)投影,無論遠(yuǎn)近1:1投影只盹;2兔院、透視投影,遠(yuǎn)小近大
攝像機(jī)坐標(biāo)系: 觀察點(diǎn)坐標(biāo)系
物體坐標(biāo)系: 物體本身坐標(biāo)
最終得到規(guī)范坐標(biāo)系孵稽!
頂點(diǎn)數(shù)據(jù)->頂點(diǎn)著色器->細(xì)分著色器->幾何著色器->圖元設(shè)置->剪切->光柵化->片元著色器->效果
OpenGL:面向過程
GLSL語(yǔ)法
GLKit框架
OpenGL渲染流程
Metal:略