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

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

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

                     不管以上的幾何對(duì)象是如何指定的,所有的幾何數(shù)據(jù)都將會(huì)經(jīng)過這個(gè)階段,這個(gè)階段負(fù)責(zé)的則是逐個(gè)頂點(diǎn)的操作.
                     在這個(gè)階段能做的工作則是:
                     1. 頂點(diǎn)變換...根據(jù)模型視圖和投影矩陣變換
                     2. 光照計(jì)算 法線變換(法線矩陣 是模型矩陣的左上角3*3的逆矩陣)和法線規(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ì)將圖元與用戶定義的裁剪平面 即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>由圖元處理傳遞過來的圖元數(shù)據(jù).在此將會(huì)被分解成更小的單元并對(duì)應(yīng)幀緩沖區(qū)的各個(gè)像素.這些單元被稱之為 片元. 一個(gè)片元可能包含窗口左邊 深度 顏色 紋理坐標(biāo)等屬性.
                     <2> 片元的屬性則是圖元上頂點(diǎn)數(shù)據(jù)等經(jīng)過插值而確定的..這里生成的片元將會(huì)包含主顏色和次顏色.
                       glShadeMode() 函數(shù)的作用將會(huì)這里體現(xiàn).即使用插值(平滑著色) 或者使用最后一個(gè)頂點(diǎn)顏色(平面著色)
                     <3> 點(diǎn)寬 線寬.多邊形模式,正面背面等一些特征也將是這階段發(fā)生作用.
                      <4> 反走樣也是這個(gè)階段起作用.

             階段6 片元處理
                     <1>上紋理 通過紋理坐標(biāo)取得紋理內(nèi)存中相對(duì)應(yīng)的顏色
                     <2> 霧化 通過片元距離當(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í)行幀緩沖的寫入等操作等..最后產(chǎn)生了顯示出來的像素.
                     glColorMask glStrncilMask glDepthMask glClearDepht glClearStencil glClearColor 等.將在這個(gè)階段影響寫入的值.


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

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


            因?yàn)檫@三個(gè)階段所決定都是最重要效果的階段..對(duì)于這些的可編程將帶來非常大的好處以及可控制的渲染!!
            posted on 2009-08-23 20:23 米游 閱讀(8870) 評(píng)論(0)  編輯 收藏 引用 所屬分類: OpenGL/OSG
            日韩人妻无码精品久久久不卡| 99久久精品影院老鸭窝| 国产精品欧美久久久天天影视| 日韩精品无码久久久久久| 99久久99久久久精品齐齐| 狠狠综合久久综合中文88| 亚洲精品tv久久久久久久久久| 亚洲中文字幕久久精品无码APP | 久久精品国产精品国产精品污| 国产精品VIDEOSSEX久久发布| 久久久精品人妻一区二区三区蜜桃| 国内精品九九久久久精品| 亚洲中文字幕伊人久久无码| 久久久久久久精品妇女99| 久久精品国产秦先生| 亚洲乱码精品久久久久..| 色综合久久天天综线观看| 国产成人精品久久亚洲高清不卡| 人妻少妇精品久久| 国产精品99久久久久久猫咪 | 久久久精品人妻一区二区三区四| 久久涩综合| 青青草国产97免久久费观看| 亚洲中文字幕无码久久2020| 久久只有这里有精品4| 91精品婷婷国产综合久久 | 日韩久久无码免费毛片软件| 国产精品久久波多野结衣| 欧美麻豆久久久久久中文| 99久久99久久精品国产| 久久精品国产亚洲av麻豆小说 | 久久人人爽人人人人爽AV | 亚洲成av人片不卡无码久久| 国产国产成人久久精品| 一本色道久久88加勒比—综合| 亚洲国产欧美国产综合久久| 久久精品免费一区二区| 一本色综合久久| 久久精品国产清自在天天线| 久久久久久久久久久| 久久99精品久久久久婷婷|