• <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++優雅之旅

            探索C++

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              15 隨筆 :: 0 文章 :: 20 評論 :: 0 Trackbacks
            mDevice->SetRenderState(D3DRS_AMBIENT, 0xffffffff);
                  光照

            DirectX中有四種光照模型:

            環境光:環境光沒有方向和位置上的特征,只有一個顏色亮度值,不會衰減,所以在所有方向和所有物體表面投射的環境光的數量是恒定不變的。

            漫反射:漫反射在生活中最為普遍,太陽光的直射,日光燈的照射都可以用漫反射光來模擬。漫反射由光的方向和物體表面的法向量決定。漫反射光的空間位置和方向對物體的照明有很大的影響。

            鏡面反射:當觀察金屬制品和玻璃制品的表面時,改變觀察點的位置,會發現物體表面的亮度也會發生變化,這種現象稱之為鏡面反射。

            自發光:就是物體自身發光,通過設置材質的自發光屬性Emissive(顏色和透明度)來實現。自發光可以影響一個對象的顏色??梢允褂貌馁|的自發光來實現發光的對象,而不用在場景中添加燈光,減少了計算量。

            用自發光屬性創建的材質并不發射能被場景中其他物體反射的光,也就是說自發光不參與光照計算。

            有三種光源

            點光源:點光源有顏色和位置,但是沒有方向,它向所有方向發射的光都一樣。在程序中需要提供點光源的顏色,位置,衰減系數等參數。

            電燈泡是點光源的一個例子。這種光的強度會隨著距離物體的遠近而衰減。

            方向光:只有方向和顏色屬性的光源,沒有位置,衰減。可以想象成從無窮遠處發來的光,例如太陽光。

            聚光燈:聚光燈有顏色,位置,方向,類似現實中的探照燈。聚光燈又一個明亮的內椎體和大一點的外椎體組成。光的強度從內椎體到外椎體逐漸衰減,衰減的規律由Falloff,Theta(內錐角)和Phi(外錐角)三個屬性共同決定。

                DirectX中物體的顏色由光的顏色和材質的顏色共同決定(和現實世界情況不同)。

                默認情況下,D3D中的燈光是開啟的,就是說寫:

            mDevice->SetRenderState(D3DRS_LIGHTING, TRUE);
                和忽略這一句效果一樣。
               

             

                如果要禁用燈光,就將這句代碼中的TRUE改為FALSE。

            1 mDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
               
                如果禁用燈光,那么任何的材質設置都不會有效果。
            2 mDevice->SetRenderState(D3DRS_AMBIENT, 0xffffffff);
               
                關于這兩句代碼(編號為1和2),又有幾種情況:
                1)1為FALSE時,啟用2,那么會獲得一個環境光照明,此時設置材質無效(渲染對象為白色),紋理可以正常顯示(如果有紋理)。
                2)1為TRUE時,啟用2,材質設置有效,會影響渲染結果,紋理可以正常顯示。
                3)1為FALSE時,禁用2,材質設置失效,紋理可以正常顯示。
                4)1為TRUE時,禁用2,材質設置失效,紋理無法顯示(渲染對象為黑色)。

               P.S.以上所說的材質指的是D3DMATERIAL9,不包括頂點色。帶有頂點色時,1為TRUE時渲染為黑色,FALSE時為正常,和2的狀態無關。

                結論:當開啟光照時,必須指定一種光源才能使渲染對象正確繪制(渲染狀態設置的環境光或者其他3種類型的光源)。

             

            posted on 2009-05-14 02:53 林公子 閱讀(1500) 評論(0)  編輯 收藏 引用 所屬分類: DirectX
            久久国产乱子伦精品免费午夜| 99久久国产综合精品麻豆| 国内精品久久久久久久coent | 99久久精品费精品国产一区二区 | 免费观看成人久久网免费观看| 亚洲国产精品婷婷久久| 久久露脸国产精品| 久久精品国产亚洲精品2020| 欧美一区二区精品久久| 久久婷婷五月综合色奶水99啪| 久久精品青青草原伊人| 久久精品无码一区二区三区| 欧美一级久久久久久久大| 久久精品aⅴ无码中文字字幕重口| 国产精品一区二区久久精品无码 | 亚洲国产欧美国产综合久久| www亚洲欲色成人久久精品| 久久久亚洲裙底偷窥综合| 久久最近最新中文字幕大全 | 国产精品欧美久久久久无广告 | 久久久一本精品99久久精品88| 中文字幕一区二区三区久久网站| 亚洲精品综合久久| 精品无码人妻久久久久久| 国产精品女同久久久久电影院| 久久久久亚洲av毛片大| 国产午夜久久影院| 久久久亚洲欧洲日产国码aⅴ| 久久人人爽人人澡人人高潮AV| 精品综合久久久久久97超人| 奇米影视7777久久精品| 久久国内免费视频| 久久久久女教师免费一区| 高清免费久久午夜精品| 精品少妇人妻av无码久久| 亚洲精品无码久久久影院相关影片| 色婷婷噜噜久久国产精品12p| 国产亚州精品女人久久久久久 | 久久久久亚洲AV无码专区首JN| 婷婷久久综合九色综合绿巨人| 久久精品免费大片国产大片|