日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenGL坐标系转换

發布時間:2024/1/1 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenGL坐标系转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉換過程

在opengl中,一個坐標的完整轉換過程,從結構層、渲染管線、坐標空間三個層級的劃分如下:
結構層:頂點——>圖元——> 片元——>緩沖(FBO)
圖像渲染管線:頂點著色器 ——>圖元裝配——>裁剪 ——>幾何著色器
——>柵格化 ——>片段著色器——> 測試與混合
坐標空間:Model/Local —
(ModelTransform)
—> World —(ViewTransform)—> eye/view/camera —(視椎體裁剪,椎體范圍轉為正方體范圍)—>Clip ———(PerspectiveDivide)—>NDC(clip/w)——(ViewportTransform)——>Screen——(ScanConversion)——>Window**

頂點的三個狀態
頂點(vertex), 一些點
圖元(primitives), 頂點組合成圖元。根據渲染模式(點、線、面)對三角面進行細分,復雜結構增加物體的三角面數以拆解成基本圖元。
片元 (Fragment),表示基本圖元映射到二維平面上的映射區域,通常一個Fragment對應屏幕一個像素。
柵格化是把點線三角形映射到屏幕上的像素點的過程。

圖像渲染管線各過程詳解

  • 頂點著色器:MVP變換,光照計算。與頂點相關的全部屬性完全確定。輸出camera space下的頂點。
  • 圖元裝配:頂點數據被結合成完整圖元。輸出圖元。
  • 幾何著色器:輸入圖元,對三角面進行細分,產生一些新頂點,構造一些新圖元。
  • 裁剪:(只有圖元才能裁剪,頂點沒有幾何意義。不裁剪,視線范圍無限遠)用相機視椎體裁剪世界坐標 ,視椎體視線范圍轉為正方體視線范圍。輸出Clip space 圖元。
  • 透視除法:四維齊次坐標通過透視除法轉換為三維NDC。NDC的意義在于頂點最后要輸出到屏幕空間。
  • 視口變換, 三維坐標轉為二維像素坐標。輸出Screen space 圖元。
  • 剔除:背面剔除
  • 光柵化:將圖元的幾何定義轉為圖像空間的離散點,生成片元集合。輸出Screen space。
  • 片元著色器:
  • 測試與混合
    • 深度剔除
    • 遮擋剔除
    • 透明物體融合

坐標系轉換過程

w分量
左右手坐標系轉換?
![](https://img-blog.csdnimg.cn/img_convert/8a612cc69330963eff4ccb221034aa4b.webp?x-oss-process=image/format,png#clientId=u698db15f-1df0-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ucc0162e6&margin=[object Object]&originHeight=1046&originWidth=600&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u2d346de2-eaae-441c-90eb-fb0640ba54c&title
Eye坐標系如何轉成NDC坐標系?

  • 非齊次坐標(x,y,z,1)轉為齊次坐標(xe,ye,ze,w);
  • Eye Space的點e 映射到 視椎體Near平面 的點p,再映射到 NDC空間 點ndc,到此,視線范圍確定為xh,yh,zh ∈[-w,w]
  • 透視除法后,得到真正的NDC坐標系。 ndc.xyz = clip.xyz / clip.w;
  • 第二步詳細過程:
    1.Eye Space的點e在兩個二維平面 (ZX平面 ZY平面)上映射到視椎體Near平面 的點p,得到點e和點p的映射關系。
    2.視椎體Near平面映射到NDC空間的[-1,1], 求出 點ndc和點p的關系
    最后得到點e和點ndc的關系,
    三維NDC坐標系轉為二維像素坐標系
    最終,模型要顯示在二維平面上,其范圍與視口相關。NDC空間很接近窗口,NDC的xy坐標與窗口坐標之間的線性關系被稱為視口變換。NDC的z值理解為深度值。

    參考文檔
    gl_FragColor的含義
    從頂點到片元
    OpenGL投影矩陣(Projection Matrix)構造方法 - lxycg - 博客園

    游戲開發技術雜談3:OpenGL投影矩陣

    總結

    以上是生活随笔為你收集整理的OpenGL坐标系转换的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。