• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-38  評(píng)論-23  文章-0  trackbacks-0

                     這幾天稍微看了一些關(guān)于GLSL的頂點(diǎn)著色以及片元著色的一些相關(guān)知識(shí).目前來(lái)講還有一個(gè)著色器則是Geometry_shader..我的顯卡用不了這個(gè)功能..當(dāng)然有點(diǎn)遺憾>_<..
                     在看了一些之后,大概了解了一些關(guān)于OpenGL渲染管線(xiàn)的知識(shí).看了這個(gè)之后對(duì)于OpenGL的學(xué)習(xí)我想應(yīng)當(dāng)是很有幫助.關(guān)于這么一篇的原文則是GLSL-LIGHTSOURCE 教程一個(gè)開(kāi)篇部分.原文地址:
            是英文的..我在osgchina教程論壇上也見(jiàn)到過(guò)FreeSouth大牛的中文翻譯..

                     關(guān)于渲染管線(xiàn)將什么呢?無(wú)非就是在OpenGL的管道當(dāng)中各個(gè)部分的功能以及如何在管道當(dāng)中形成了我們想要的最終的一幅圖.(像素).而管線(xiàn)當(dāng)中的操作可分為以下幾個(gè)部分:

             階段1. 指定幾何對(duì)象.
                  如:點(diǎn) 線(xiàn) 三角形.等一些幾何圖元..OpenGL繪制幾何圖元的方法有以下三種:
                  <1> 一次一個(gè)頂點(diǎn).即使用glBegin()  glVertex() glEnd() 指定幾何對(duì)象.
                  <2> 使用頂點(diǎn)數(shù)組..如glDrawArrays.glDrawElements.等.一次性的繪制大量圖元.
                 上面這兩種模式則是立即模式.即指定完圖元之后會(huì)被立即渲染.即將所有數(shù)據(jù)發(fā)往渲染管線(xiàn)后立即被渲染.
                  <3>顯示列表模式.它存儲(chǔ)于OpenGL服務(wù)端 (接收OpenGL命令的一端.) glNewList glEndList glCallList .
                
            階段2   頂點(diǎn)處理操作:

                     不管以上的幾何對(duì)象是如何指定的,所有的幾何數(shù)據(jù)都將會(huì)經(jīng)過(guò)這個(gè)階段,這個(gè)階段負(fù)責(zé)的則是逐個(gè)頂點(diǎn)的操作.
                     在這個(gè)階段能做的工作則是:
                     1. 頂點(diǎn)變換...根據(jù)模型視圖和投影矩陣變換
                     2. 光照計(jì)算 法線(xiàn)變換(法線(xiàn)矩陣 是模型矩陣的左上角3*3的逆矩陣)和法線(xiàn)規(guī)格化
                     3. 紋理坐標(biāo)變換.(紋理矩陣)
                     4.材質(zhì)狀態(tài) 紋理坐標(biāo)生成?
                     而最重要的則是變換以及光照. 每個(gè)頂點(diǎn)在這個(gè)階段分別是單獨(dú)處理的.
                     這個(gè)階段所接收到的數(shù)據(jù)則是每個(gè)頂點(diǎn)的屬性特征..輸出則是變換后的頂點(diǎn)數(shù)據(jù).

            階段3  圖元組裝
                     在頂點(diǎn)處理之后,頂點(diǎn)的全部屬性都已經(jīng)被確定 在這個(gè)階段頂點(diǎn)將會(huì)根據(jù)應(yīng)用程序送往的圖元規(guī)則.
            GL_POINTS GL_TRIANGLES 等 將會(huì)被組裝成圖元

            階段4 圖元處理(裁剪 消隱)
                     <1>這個(gè)步驟第一個(gè)所做的應(yīng)當(dāng)是裁剪操作..會(huì)將圖元與用戶(hù)定義的裁剪平面 即glClipPlane 和模型投影矩陣所建立的視景比較. 這將會(huì)裁剪且丟棄位于視景和裁剪平面外部的圖元.不在予以處理.
                    <2> 其次.若是采用透視投影 那么.將會(huì)對(duì)每個(gè)頂點(diǎn)的x,y z坐標(biāo)分別除以w.
                    <3>緊接著 則是由視口變換將頂點(diǎn)坐標(biāo)變換至窗口坐標(biāo).
                    <4> 執(zhí)行消隱操作

            階段5  柵格化操作
                    <1>由圖元處理傳遞過(guò)來(lái)的圖元數(shù)據(jù).在此將會(huì)被分解成更小的單元并對(duì)應(yīng)幀緩沖區(qū)的各個(gè)像素.這些單元被稱(chēng)之為 片元. 一個(gè)片元可能包含窗口左邊 深度 顏色 紋理坐標(biāo)等屬性.
                     <2> 片元的屬性則是圖元上頂點(diǎn)數(shù)據(jù)等經(jīng)過(guò)插值而確定的..這里生成的片元將會(huì)包含主顏色和次顏色.
                       glShadeMode() 函數(shù)的作用將會(huì)這里體現(xiàn).即使用插值(平滑著色) 或者使用最后一個(gè)頂點(diǎn)顏色(平面著色)
                     <3> 點(diǎn)寬 線(xiàn)寬.多邊形模式,正面背面等一些特征也將是這階段發(fā)生作用.
                      <4> 反走樣也是這個(gè)階段起作用.

             階段6 片元處理
                     <1>上紋理 通過(guò)紋理坐標(biāo)取得紋理內(nèi)存中相對(duì)應(yīng)的顏色
                     <2> 霧化 通過(guò)片元距離當(dāng)前視點(diǎn)位置修改顏色.
                     <3> 顏色匯總..(這個(gè)與混合完全不同概念.將(紋理,主定義的顏色,霧化的顏色,次顏色光照階段計(jì)算的顏色)匯總一起.
                   
            階段7  逐個(gè)片元的操作
                     <1> 所有的一些測(cè)試 像素所有權(quán) 剪切(glScissor) Alpha測(cè)試(glAlphaFunc) 模版測(cè)試(glStencilFunc)
                      深度測(cè)試 (glDephtFunc) 混合(glBlendFunc) 
                     這些操作將會(huì)最后影響其在幀緩沖區(qū)的顏色值.

            階段8  幀緩沖操作
                    <1>這個(gè)階段執(zhí)行幀緩沖的寫(xiě)入等操作等..最后產(chǎn)生了顯示出來(lái)的像素.
                     glColorMask glStrncilMask glDepthMask glClearDepht glClearStencil glClearColor 等.將在這個(gè)階段影響寫(xiě)入的值.


            以上只是討論OpenGL 圖元繪制的基本過(guò)程 那么基于像素圖像繪制.幾乎形同之上..只是在光柵化處理前的操作不一樣.即經(jīng)過(guò)像素解碼 像素傳輸.柵格化 最后形成片元...片元之后的處理完全一樣..

            因此 在著色器編程領(lǐng)域..你將可實(shí)現(xiàn)
                Vertex Shader 替換 頂點(diǎn)處理階段
                Fragment Shader 替換 片元處理階段
                Geometry Shader 替換 圖元組裝階段..


            因?yàn)檫@三個(gè)階段所決定都是最重要效果的階段..對(duì)于這些的可編程將帶來(lái)非常大的好處以及可控制的渲染!!
            posted on 2009-08-23 20:23 米游 閱讀(8863) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): OpenGL/OSG
            国产香蕉97碰碰久久人人| 婷婷久久综合九色综合绿巨人| 999久久久国产精品| 久久精品国产亚洲AV无码娇色| 国内精品久久久久影院薰衣草| 怡红院日本一道日本久久 | 久久线看观看精品香蕉国产| 亚洲精品国产字幕久久不卡 | 久久久久久午夜精品| 久久精品无码免费不卡| 久久伊人五月丁香狠狠色| 久久人人爽爽爽人久久久| 97久久精品人人做人人爽| 久久国产乱子伦精品免费强| 亚洲国产成人精品女人久久久 | 亚洲AV无码久久精品成人| 色欲综合久久中文字幕网| 69久久夜色精品国产69| 亚洲AⅤ优女AV综合久久久| 久久久久国产精品嫩草影院| 国内精品久久久久国产盗摄| 久久成人国产精品一区二区| 欧美亚洲国产精品久久| 久久91综合国产91久久精品| 国产精品无码久久综合网| 亚洲色欲久久久综合网| 久久久久久免费一区二区三区| 久久久久黑人强伦姧人妻| 一本一道久久综合狠狠老| 色综合久久精品中文字幕首页| 久久人人爽人人爽人人片AV东京热 | 亚洲乱码中文字幕久久孕妇黑人| 精品人妻久久久久久888| 亚洲国产美女精品久久久久∴ | 99久久精品免费看国产免费| 久久久久亚洲AV无码专区桃色| 亚洲国产精品无码久久久不卡| 91久久精品无码一区二区毛片| 一级a性色生活片久久无少妇一级婬片免费放| 久久国产欧美日韩精品| 久久综合九色综合久99|