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

            性能優(yōu)化:(From D3D9 SDK)

            常規(guī)技巧

            1 只在必須的時(shí)候Clear。
               IDirect3DDevice9::Clear函數(shù)通常需要花費(fèi)較多的時(shí)間,因此要盡量少調(diào)用,而且只清空的確需要清空的緩存。

            2 盡量減少狀態(tài)切換。并且將需要進(jìn)行的狀態(tài)切換組合在一起設(shè)置。
               狀態(tài)包括RenderState,SamplerState,TextureStageState等

            3 紋理尺寸盡可能小

            4 從前至后渲染場(chǎng)景中的對(duì)象
               從前至后渲染可以盡可能早地精選出不需要繪制的對(duì)象和象素

            5 使用三角條帶代替三角列表和三角扇。為了能更有效利用頂點(diǎn)高速緩存(cache),在排列條帶時(shí)因考慮盡快重用頂點(diǎn)。

            6  根所需要據(jù)消耗的系統(tǒng)資源來(lái)逐步減少特效。

            7 經(jīng)常性地檢測(cè)程序的性能。
               這樣可以更容易發(fā)現(xiàn)引起性能突變的部分

            8 最小化頂點(diǎn)緩存的切換

            9 盡可能使用靜態(tài)頂點(diǎn)緩存

            10 對(duì)靜態(tài)對(duì)象,對(duì)每種FVF使用一個(gè)大的靜態(tài)頂點(diǎn)緩存來(lái)保存多個(gè)對(duì)象的頂點(diǎn)數(shù)據(jù),而不是每個(gè)對(duì)象使用一個(gè)頂點(diǎn)緩存。
               其目的也是減少頂點(diǎn)緩存的切換

            11 如果程序需要隨機(jī)訪問(wèn)AGP內(nèi)存中的頂點(diǎn)緩存,頂點(diǎn)格式的大小最好是32bytes的倍數(shù)。否則,選擇合適的最小的格式。
            32bytes 也就是8個(gè)float數(shù)據(jù)或2個(gè)vector4。

            12 使用頂點(diǎn)索引方式渲染,這樣可以更有效利用頂點(diǎn)高速緩存。

            13 如果深度緩存格式中包含有模版緩存,總是將兩者一起Clear。

            14 將計(jì)算結(jié)果和輸出的shader指令合并:
            // Rather than doing a multiply and add, and then output the data with
            //   two instructions:
            mad r2, r1, v0, c0
            mov oD0, r2

            // Combine both in a single instruction, because this eliminates an 
            //   additional register copy.
            mad oD0, r1, v0, c0

            建立一個(gè)場(chǎng)景對(duì)象的數(shù)據(jù)庫(kù),首先使用最低精度的模型,在保證性能的前提下逐步使用更高精度的模型。密切關(guān)注渲染的總的三角面數(shù)。

            將使用相同渲染狀態(tài)和貼圖的圖元集中在一起繪制,這樣能盡量減少頂點(diǎn)緩存和狀態(tài)的切換。并且將狀態(tài)切換操作集中成一組設(shè)置。

            盡量減少光源數(shù)量,使用環(huán)境光來(lái)提高亮度。方向光源比點(diǎn)光源和聚光燈更高效,因?yàn)楣獾姆较蚴枪潭ǖ摹J褂霉庹辗秶鷧?shù)來(lái)剔除不受光照影響的物體。鏡面高光幾乎使光照計(jì)算量加倍,因此只在需要時(shí)使用,將D3DRS_SPECULARENABLE設(shè)為FALSE,將材質(zhì)的specular power 設(shè)為0,將材質(zhì)的specular color 設(shè)為0。

            盡量減小紋理尺寸,這樣可以增加紋理被緩存的可能性。盡量減少紋理的切換,將使用同一紋理的對(duì)象集中繪制。盡量使用正方形紋理。最快的紋理是256×256,將4張128×128的紋理拼接成256×256使用。

            連接World-View Matrix, 將ViewMatrix設(shè)為Identity減少矩陣乘法運(yùn)算。

            動(dòng)態(tài)紋理。首先要檢查D3DCAPS2_DYNAMICTEXTURES來(lái)判斷硬件是否支持。
            其二,動(dòng)態(tài)紋理不能放在MANAGED pool中。動(dòng)態(tài)紋理總是能鎖定,甚至是在D3DPOOL_DEFAULT中。D3DLOCK_DISCARD是合法的。
            DrawProceduralTexture(pTex)
            {
                // pTex should not be very small because overhead of
                //   calling driver every D3DLOCK_DISCARD will not
                //   justify the performance gain. Experimentation is encouraged.
                pTex->Lock(D3DLOCK_DISCARD);
                <Overwrite *entire* texture>
                pTex->Unlock();
                pDev->SetTexture();
                pDev->DrawPrimitive();
            }

            當(dāng)需要在每幀里鎖定頂點(diǎn)或索引緩存是,應(yīng)該使用動(dòng)態(tài)緩存(D3DUSAGE_DYNAMIC)。對(duì)動(dòng)態(tài)緩存使用D3DLOCK_DISCARD鎖定能減少延遲。D3DLOCK_NOOVERWRITE鎖定可以用于在緩存空閑處添加新的數(shù)據(jù)而不修改已經(jīng)寫(xiě)入的數(shù)據(jù)。

            使用Effect時(shí),應(yīng)該根據(jù)Effect,然后根據(jù)Technique來(lái)安排渲染順序,也就是使用相同Effect和Technique的物體應(yīng)該集中繪制。這樣可以減少狀態(tài)切換開(kāi)銷(xiāo)。

            posted on 2007-06-04 12:57 隨便寫(xiě)寫(xiě) 閱讀(1347) 評(píng)論(1)  編輯 收藏 引用

            評(píng)論

            # re: 性能優(yōu)化:(From D3D9 SDK) 2014-12-25 16:00 陳默

            LZ威猛哦!  回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            導(dǎo)航

            <2007年6月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            1234567

            統(tǒng)計(jì)

            常用鏈接

            留言簿(1)

            隨筆分類(lèi)(30)

            隨筆檔案(16)

            文章分類(lèi)(18)

            文章檔案(9)

            鏈接

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久无码AV中文出轨人妻| 亚洲狠狠久久综合一区77777| 久久综合九色欧美综合狠狠| 欧美久久久久久| 久久夜色精品国产噜噜噜亚洲AV| 久久精品视频免费| 久久久久久精品无码人妻| 久久精品国产久精国产思思| 欧美精品一区二区精品久久 | 久久久久久久精品妇女99| 亚洲AV乱码久久精品蜜桃| 久久精品99无色码中文字幕| 久久国产AVJUST麻豆| 91久久香蕉国产熟女线看| 亚洲级αV无码毛片久久精品 | 一本色综合网久久| 99久久国产主播综合精品| 人妻无码αv中文字幕久久| 国产免费福利体检区久久 | 精品一区二区久久| 97精品依人久久久大香线蕉97| 99久久精品无码一区二区毛片 | 国产日韩久久免费影院| 久久这里只有精品18| 久久亚洲sm情趣捆绑调教 | 91久久精品视频| 久久久久国产一级毛片高清版| 久久久久久亚洲AV无码专区| 久久强奷乱码老熟女网站| 无码八A片人妻少妇久久| 久久久久成人精品无码| 久久久精品久久久久特色影视 | 亚洲精品乱码久久久久久蜜桃图片| 久久亚洲AV永久无码精品| 久久久噜噜噜久久中文字幕色伊伊| 久久久久中文字幕| 久久e热在这里只有国产中文精品99| 久久久久久九九99精品| 人妻无码αv中文字幕久久琪琪布| 一本久道久久综合狠狠爱| 亚洲欧美伊人久久综合一区二区|