?標(biāo)準(zhǔn)化設(shè)備坐標(biāo)(Normalized Device Coordinate, NDC):x, y, z介于[-1.0, 1.0]
局部空間(Local Space,物體空間Object Space)
世界空間(World Space)
觀察空間(View Space乃沙,視覺(jué)空間Eye Space)
裁剪空間(Clip Space)
屏幕空間(Screen Space)
模型矩陣是一種轉(zhuǎn)換矩陣薪铜,它能通過(guò)對(duì)對(duì)象進(jìn)行平移漆弄、縮放脚草、旋轉(zhuǎn)來(lái)將它置于它本應(yīng)該在的位置或方向。世界坐標(biāo)原點(diǎn)(0, 0, 0)披坏,變換時(shí)將本地坐標(biāo)系在世界坐標(biāo)系變換态坦。
觀察空間,可形象的視為OpenGL的攝像機(jī)棒拂,通過(guò)觀察矩陣(平移和旋轉(zhuǎn)的組合)將對(duì)象的世界坐標(biāo)轉(zhuǎn)換為觀察者視野前的坐標(biāo)伞梯。
投影矩陣創(chuàng)建的觀察區(qū)域?yàn)橐曞F體(Frustum),視錐體范圍內(nèi)的坐標(biāo)會(huì)最終出現(xiàn)在用戶的屏幕上帚屉,此過(guò)程稱為投影(Projection)壮锻,之后經(jīng)過(guò)透視劃分(Perspective Division)操作將四維裁剪空間坐標(biāo)轉(zhuǎn)換為三維標(biāo)準(zhǔn)化設(shè)備坐標(biāo)。
正射投影:Orthographic Projection涮阔。
以上視錐體近似為立方體,定義了由寬灰殴,高敬特,近平面,遠(yuǎn)平面決定的可視坐標(biāo)系牺陶。任何出現(xiàn)在近平面前面或遠(yuǎn)平面后面的坐標(biāo)都會(huì)被裁剪掉伟阔。
透視投影:Perspective Projection
FOV(Field of View):視野,表示觀察的空間的大小掰伸。FOV越大皱炉,相同位置的物體的在投影屏幕上越小。
正射投影的每個(gè)頂點(diǎn)和觀察者的距離是一樣的狮鸭。
頂點(diǎn)坐標(biāo)到裁剪坐標(biāo):
OpenGL是右手坐標(biāo)系合搅,但在標(biāo)準(zhǔn)化設(shè)備坐標(biāo)系中是左手坐標(biāo)系(DirectX也是)多搀。
Z緩沖區(qū):OpenGL存儲(chǔ)所有深度信息于Z緩沖區(qū)(Z-Buffer)中,即深度緩沖區(qū)(Depth Buffer)灾部。深度存儲(chǔ)在每個(gè)片段里面(作為片段的z值)康铭。當(dāng)片段像輸出它的顏色時(shí),OpenGL會(huì)將它的深度值和z緩沖進(jìn)行比較然后如果當(dāng)前的片段在其它片段之后它將會(huì)被丟棄赌髓,然后重寫从藤。這個(gè)過(guò)程稱為深度測(cè)試(Depth Testing)并且它是由OpenGL自動(dòng)完成的。
圖片和一些文字來(lái)源于https://learnopengl-cn.github.io锁蠕,本人收集作為筆記夷野,如有侵權(quán),望告知