• <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>

            月下的博客

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              34 Posts :: 0 Stories :: 59 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(5)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

               來自今天openGpu上的一個帖子,以前自己對這塊也是一知半解,導致了曾經在一次面試中在這個問題上卡殼(反正最后是沒過。。哭。。。),這次看到正好最近看shaderX1里有介紹,所以就一鼓作氣理解下吧!!

            這是shaderX1里從vertex到pixelshader之前的pipeline

            我具體解釋下從vertex shader到pixel shader中間的部分:
            face culling:根據triangle的兩邊向量叉乘得到的面法線方向來確定是順時針還是逆時針,從而達到裁剪。
            user clip planes:除了使用投影矩陣定義出的6個clipplane之外我們也可以額外自己定義對應的clipplane來剪裁。
            frustum culling:視錐裁剪,不說了
            homogeneous divide:這就是你說的除以什么w的地方,變換后的定點的xyz均會除以起w,以opengl的列為主(沒記錯的話。。反正就是matrix X vector的那個。。)透視投影矩陣的最后一行為0 0 1 0, 所以w值就是未經變換前的z值,所以根據透視投影的特性使得:-1=<x/w<=1, -1=<y/w<=1, -1=<z/w<=1。但是為何我們要這么做捏。。答案是我沒看懂。。。我覺得純粹是為了下一步。。下面說
            viewport mapping:上一步后x,y,z現在已經是-1到1之間,上一步的齊次坐標系又被稱為normalized device coordinates(NDC),那么我們要將這些頂點映射到屏幕空間就很簡單了,x = NDC(x) * width + width / 2, y = NDC(y) * height + height/2。

            呼。。如果有錯的話還請指正哈!~~
            posted on 2011-05-08 19:46 月下圓舞曲 閱讀(2244) 評論(0)  編輯 收藏 引用 所屬分類: 開發
            精品久久久久久国产三级| 国产福利电影一区二区三区久久老子无码午夜伦不 | 伊人久久久AV老熟妇色| 99久久国语露脸精品国产| 中文字幕一区二区三区久久网站| 国産精品久久久久久久| 无夜精品久久久久久| 久久99国产综合精品免费| 久久精品中文字幕一区| 久久久久亚洲AV无码专区网站| 99久久香蕉国产线看观香 | 久久九九亚洲精品| 日韩AV毛片精品久久久| 人妻丰满AV无码久久不卡| 亚洲国产成人久久综合一 | 国产精品99久久99久久久| 亚洲国产高清精品线久久| 国产成人综合久久综合| 波多野结衣久久精品| 久久精品国产只有精品66| 成人资源影音先锋久久资源网| 久久天天躁狠狠躁夜夜不卡| 国产精品伊人久久伊人电影 | 99久久www免费人成精品| 久久亚洲AV成人无码国产| 欧美成a人片免费看久久| 久久综合丁香激情久久| 久久91精品国产91久久户| 久久综合噜噜激激的五月天| 色偷偷91久久综合噜噜噜噜| 亚洲综合婷婷久久| 婷婷综合久久狠狠色99h| 人妻精品久久无码区| 婷婷五月深深久久精品| 无码人妻久久久一区二区三区 | 久久精品a亚洲国产v高清不卡| 国产成人久久精品一区二区三区| 日本久久久久久久久久| 久久午夜福利电影| 偷窥少妇久久久久久久久| 久久天天躁夜夜躁狠狠|