<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何把OpenGL中3D坐標轉換成2D坐標

Dbwd_Imgtec ? 來源:未知 ? 作者:胡薇 ? 2018-07-09 10:40 ? 次閱讀

在OpenGL中,一切事物都在3D空間中,但我們的屏幕坐標確實2D像素數組,OpenGL大部分工作就是把3D坐標轉換成適應屏幕的2D像素。

3D坐標轉換成2D屏幕坐標的過程是由OpenGL的圖形渲染管線管理的。

圖形渲染管線的工作可以被劃分為兩個主要的部分:

把3D坐標轉換成2D坐標。

把2D坐標轉換成實際有顏色的像素。

注意:2D坐標和像素是不同的,2D坐標精確的描述了一個點在2D空間中的位置,二2D像素是這個點的近似值,2D像素收到你的屏幕/窗口分辨率的限制

圖形渲染管線包含很多部分。首先,我們以數組形式傳遞3D個3D坐標作為圖形渲染管線的輸入,用來表示三角形,這個數組叫做定點數據(Vertex Data);定點數據是一系列定點的集合。一個頂點(Vertex)是一個3D坐標的集合。為了簡單起見,我們假定每個頂點只由一個3D位置和一些顏色值構成。

注意:OpenGL不知道我們傳入的頂點位置和顏色值到底需要構成什么,這個時候就需要我們去指定這些數據去表示渲染類型。做出的這些提示叫做圖元(Primitive),我們可以指定一下三種:GL_POINTS、GL_TRIANGLES、GL_LINE_STRIP。

圖形渲染管線的第一個部分是頂點著色器,它把單獨的頂點作為輸入,頂點著色器的主要目的是吧3D坐標轉換成另外一種3D坐標。同時頂點著色器允許我們隊頂點屬性進行一些基本處理。

圖元裝配階段是將頂點著色器輸出的頂點作為一個輸入,(如果是GL_POINTS,那么就是一個頂點),并把所有的點裝配成指定圖元的形狀。

圖元裝配階段的輸出會傳遞給幾何著色器。集合著色器吧圖元形式的一系列定點作為集合的輸入,它可以通過產生新的頂點構造出新的(或者其他的)圖元來生成其他的形狀。

幾何著色器的輸出會被傳入光柵化階段,它會把圖元轉換成最終屏幕上相應的像素生成供片段作色器使用的片段。在片段著色器運行之前會執行裁剪,裁剪會丟棄在視線范圍外的所有像素,以提供執行效率。

片段著色器的主要目的是計算一個像素的最終顏色。在顏色確定以后,最終會被傳入到一個最后的階段 ,Alpha測試和混合測試階段。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • OpenGL
    +關注

    關注

    1

    文章

    84

    瀏覽量

    29054

原文標題:OpenGL工作流程:把3D坐標轉換成2D坐標

文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    蘋果手機(IPHONE) OpenGL ES 3D 游戲開發培訓班

    with Shaders 第二階段--動畫與2D、3D繪圖,使用Quartz繪圖動畫與2D、3D繪圖,使用QuartzL繪圖1 圖形世界的兩個視圖
    發表于 05-16 14:50

    labview 怎樣抓取3D球體上某點的三維坐標?

    鼠標點在3D球體上,能夠自動輸出該點三維坐標。謝謝各位大牛們
    發表于 04-14 23:44

    如何將一個3D散點圖與3D網格圖在一個三維坐標顯示呢?

    如何將一個3D散點圖與3D網格圖在一個三維坐標顯示呢?
    發表于 03-08 18:18

    坐標變換的疑問

    頻率同步旋轉的(d,q)坐標系經過此項變換后三相對稱靜止坐標的基波正弦變量將轉換成 同步旋轉坐標
    發表于 10-25 14:04

    針對顯示屏的2D/3D觸摸與手勢開發工具包DV102014

    GestIC傳感技術,將2D多點觸摸和3D手勢識別功能輕松集成至其顯示應用。由于采用了基于電場的技術,現在我們可以跟蹤顯示屏表面甚至是距顯示屏上方20 cm以內的手和手指手勢。此外,該開發工具包提供了易于
    發表于 11-07 10:45

    如何同時獲取2d圖像序列和相應的3d點云?

    如何同時獲取2d圖像序列和相應的3d點云?以上來自于谷歌翻譯以下為原文How to obtain the sequence of 2d image and corresponding 3d
    發表于 11-13 11:25

    請問怎么才能將AD3D封裝庫轉換2D的封裝庫?

    請問怎么將AD3D封裝庫轉換2D的封裝庫
    發表于 06-05 00:35

    如何計算才能把坐標轉換成水平的坐標系?

    當mpu6050初始放置的時候是傾斜的,如何計算才能把坐標轉換成水平的坐標系?轉換后的效果是保證傾角不變,水平轉動mpu,出來的數據是水平轉動的。我用當前四元數與初始的四元數做差,得
    發表于 07-31 22:19

    請問altium designer09轉換不了3D視圖該怎么辦?

    file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\2050622533\QQ\WinTemp\RichOle\VNZ`PW}U}`COT@YK1B$53TA.png使用AD09轉換成3D視圖的時候和
    發表于 09-12 03:26

    如何在AltiumPCB2D庫里導出3D?

    請問PCB 2D怎么導出3D
    發表于 09-11 22:17

    如何更改Altium圖中3D的這個坐標軸?

    3D的這個坐標軸可以更改嗎?怎么更改?
    發表于 09-18 05:36

    為什么3D2D模型不能相互轉換?

    AD17.1.5軟件,3D2D模型不能相互轉換,按3可以進入3D模型,按2不可以進入
    發表于 09-20 05:35

    如何將相對坐標轉換成UBFS的絕對坐標?

    嗨,各位,我目前正在使用一個觸摸應用程序,它應該使用絕對坐標。如何將相對坐標轉換成UBFS的絕對坐標?我已經閱讀了數據表組件,但它沒有說,
    發表于 10-28 09:58

    浩辰3D軟件新手入門攻略:草圖平面

    想要快速上手一款3D軟件,首先對草圖平面的掌握是必不可少的,因為無論是幾何體(如 2D 線框元素)或過程特征(如孔特征)時,必須將其放置在鎖定的草圖平面上。浩辰3D軟件的許多命令使用
    發表于 09-24 16:11

    【Altium小課專題 第193篇】PCB封裝如何在2D3D模式之間進行切換?

    答:1)執行菜單命令“視圖→切換到3維模式”即可切換到3D模式2)執行菜單命令“視圖→切換到2維模式”即可切換到2D模式
    發表于 09-13 14:13
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>