• <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++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(28)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            下面是畫線圖元注釋
             1 //渲染指定顏色的線
             2 void CALL HGE_Impl::Gfx_RenderLine(float x1, float y1, float x2, float y2, DWORD color, float z)
             3 {
             4     if(VertArray) //如果頂點(diǎn)數(shù)組不為空
             5     {
             6         if(CurPrimType!=HGEPRIM_LINES    //如果最近一次不是畫線操作
             7             || nPrim>=VERTEX_BUFFER_SIZE/HGEPRIM_LINES //如果畫線操作緩存已經(jīng)超過(guò)了最大數(shù)
             8             || CurTexture ||   //如果當(dāng)前存在紋理
             9             CurBlendMode!=BLEND_DEFAULT //如果混合不是缺省模式
            10             )
            11         {
            12             _render_batch();  //批量渲染
            13 
            14             CurPrimType=HGEPRIM_LINES;  //當(dāng)操作
            15             if(CurBlendMode != BLEND_DEFAULT) _SetBlendMode(BLEND_DEFAULT); //設(shè)置混合模式
            16             if(CurTexture) { pD3DDevice->SetTexture(00); CurTexture=0; }  //清空紋理
            17         }
            18         //將頂點(diǎn)加到緩存中
            19         int i=nPrim*HGEPRIM_LINES;
            20         VertArray[i].x = x1; VertArray[i+1].x = x2;
            21         VertArray[i].y = y1; VertArray[i+1].y = y2;
            22         VertArray[i].z     = VertArray[i+1].z = z;
            23         VertArray[i].col   = VertArray[i+1].col = color;
            24         VertArray[i].tx    = VertArray[i+1].tx =
            25         VertArray[i].ty    = VertArray[i+1].ty = 0.0f;
            26         nPrim++;
            27     }
            28 }
            29 
            其它的Gfx_RenderTriple、Gfx_RenderQuad分別是三角與方型圖元方法,與畫線方法類似。
            下面是批量畫圖元方法注釋
             1 void HGE_Impl::_render_batch(bool bEndScene)
             2 {
             3     if(VertArray)
             4     {
             5         pVB->Unlock(); //鎖定VertexBuffer 頂點(diǎn)緩存
             6         
             7         if(nPrim)  //如果存在要畫的圖元
             8         {
             9             switch(CurPrimType)  
            10             {
            11                 case HGEPRIM_QUADS:  //方形圖元,這里使用的是頂點(diǎn)索引的方式
            12                     pD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, nPrim<<20, nPrim<<1);
            13                     break;
            14 
            15                 case HGEPRIM_TRIPLES: //三角圖元
            16                     pD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, nPrim);
            17                     break;
            18 
            19                 case HGEPRIM_LINES:  //線性圖元
            20                     pD3DDevice->DrawPrimitive(D3DPT_LINELIST, 0, nPrim);
            21                     break;
            22             }
            23 
            24             nPrim=0;
            25         }
            26 
            27         if(bEndScene) VertArray = 0;
            28         else pVB->Lock( 00, (BYTE**)&VertArray, 0 ); //解除鎖定
            29     }
            30 }
            在這里可以看出,HGE共有三種圖元。對(duì)于連續(xù)畫的相同圖元,會(huì)先放到緩存中,當(dāng)新圖元類型發(fā)生變化或緩存滿了,將會(huì)緩存畫出來(lái)。
            Gfx_StartBatch則是強(qiáng)制將緩存的圖元畫出來(lái)。

            posted on 2010-02-01 17:09 冬瓜 閱讀(2200) 評(píng)論(3)  編輯 收藏 引用 所屬分類: 原創(chuàng)HGE

            Feedback

            # re: HGE 一些圖元渲染注釋[未登錄] 2010-02-02 09:15 dophi
            嘿嘿,不知道hge為啥不提供點(diǎn)圖元,你可以擴(kuò)展下,支持下點(diǎn)圖元撒,不然畫點(diǎn)只能用畫線來(lái)模擬,很糾結(jié)的事情啊。  回復(fù)  更多評(píng)論
              

            # re: HGE 一些圖元渲染注釋 2010-02-02 09:54 冬瓜
            這個(gè)不是HGE的問(wèn)題,DX只提供了少量的圖元。一般來(lái)說(shuō),2D的效率,使用紋理貼圖就可以了  回復(fù)  更多評(píng)論
              

            # re: HGE 一些圖元渲染注釋[未登錄] 2010-02-02 17:02 dophi
            @冬瓜
            本來(lái)也就不算是個(gè)問(wèn)題,只是hge沒做而已,但是dx是提供點(diǎn)圖元的,要做是肯定可以做的。  回復(fù)  更多評(píng)論
              

            亚洲伊人久久综合影院| 亚洲AV日韩精品久久久久久久| 国产精品久久久久9999| 久久精品国产免费| 精品久久久一二三区| 国内精品久久国产大陆| 日韩亚洲国产综合久久久| 久久久久亚洲AV无码专区首JN| 久久国产热精品波多野结衣AV| 国产午夜精品理论片久久| 亚洲精品乱码久久久久久蜜桃不卡| 91久久精品91久久性色| 综合久久一区二区三区| 婷婷综合久久狠狠色99h| 国产69精品久久久久9999APGF | 久久久久香蕉视频| 国产精品青草久久久久婷婷| 亚洲国产精品狼友中文久久久| 国产精品对白刺激久久久| 国产精品久久婷婷六月丁香| 狠狠色伊人久久精品综合网| 韩国无遮挡三级久久| 99久久久国产精品免费无卡顿| 2020国产成人久久精品| 日本高清无卡码一区二区久久| 9191精品国产免费久久| 国产韩国精品一区二区三区久久| 人妻无码精品久久亚瑟影视 | 99久久国产主播综合精品| 国产亚洲综合久久系列| 久久精品九九亚洲精品| 久久无码人妻一区二区三区| 亚洲人成精品久久久久 | 久久青青草原国产精品免费| 久久狠狠高潮亚洲精品| 国产婷婷成人久久Av免费高清| 久久人人爽人人爽人人片AV麻烦 | 国产91久久精品一区二区| 91久久精一区二区三区大全| 国产午夜精品理论片久久影视| 久久er热视频在这里精品|