• <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++優(yōu)雅之旅

            探索C++

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              15 隨筆 :: 0 文章 :: 20 評(píng)論 :: 0 Trackbacks

               學(xué)習(xí)D3D9的時(shí)候遇到靈活頂點(diǎn)格式(FVF)中D3DFVF_XYZRHW和D3DFVF_XYZ之間差異而引起的問(wèn)題。
            參看了同是C++博客的一篇博文,其分析如下:
                   The RHW value, which stands for Reciprocal of Homogeneous W[1], tells Direct3D that the vertices that are being used are already in screen coordinates. This value is normally used in fog and clipping calculations and should be set to 1.0.
                   在頂點(diǎn)結(jié)構(gòu)體中沒(méi)有RHW時(shí),Direct3D將執(zhí)行視、投影、世界等變換以及進(jìn)行光線計(jì)算,之后你才能在窗口中得到你所繪制的物體。當(dāng)頂點(diǎn)結(jié)構(gòu)體中有RHW時(shí),就像上面那段英文所述,告知Direct3D使用的頂點(diǎn)已經(jīng)在屏幕坐標(biāo)系中了,不再執(zhí)行視圖、投影、世界等變換和光線計(jì)算,因?yàn)镈3DFVF_XYZRHW標(biāo)志告訴它頂點(diǎn)已經(jīng)經(jīng)過(guò)了這些處理,并直接將頂點(diǎn)進(jìn)行光柵操作,任何用SetTransform進(jìn)行的轉(zhuǎn)換都對(duì)其無(wú)效。不過(guò)這時(shí)的原點(diǎn)就在客戶區(qū)的左上角了,其中x向右為正,y向下為正,而z的意義已經(jīng)變?yōu)閦-buffer的象素深度。
                   值得注意的是D3DFVF_XYZRHW和D3DFVF_XYZ、D3DFVF_NORMAL不能共存,因?yàn)楹髢蓚€(gè)標(biāo)志與前一個(gè)矛盾。在使用這種頂點(diǎn)時(shí),系統(tǒng)需要頂點(diǎn)的位
            置已經(jīng)經(jīng)過(guò)變換了,也就是說(shuō)x、y必須在屏幕坐標(biāo)系中,z必須是z-buffer中的象素深度,取值范圍:0.0-1.0,離觀察者最近的地方為0.0,觀察范圍內(nèi)最遠(yuǎn)可見(jiàn)的地方為1.0。
            ---------------------------------------------------------------------------------------------------------------------------------------------------------------
                   結(jié)合我自己的試驗(yàn),有一些發(fā)現(xiàn),記錄下來(lái)以備忘。
                   D3DFVF_XYZ默認(rèn)的用戶區(qū)中心坐標(biāo)是(0,0),而D3DFVF_XYZRHW是左上角為(0,0)
                   用D3DFVF_XYZ默認(rèn)的為非光照的,而D3DFVF_XYZRHW是高洛德光照。
                   當(dāng)使用D3DFVF_XYZ時(shí),要設(shè)置渲染狀態(tài):

                  g_pd3dDevice->SetRenderState(D3DRS_LIGHTING,FALSE)
                     而且要設(shè)置觀察矩陣和投影矩陣,例如:
                    
                  D3DXMATRIX matProj;
                  D3DXMATRIX matView;

                
            // Create and set the projection matrix
                  D3DXMatrixPerspectiveFovLH(&matProj, D3DX_PI/4.0f1.33333f1.0f1000.0f);
                  g_pd3dDevice
            ->SetTransform(D3DTS_PROJECTION, &matProj);

                 
            // Create and set the view matrix
                  D3DXMatrixLookAtLH(&matView,                                \
                    
            &D3DXVECTOR3(0.0f0.0f-500.0f),       \
                    
            &D3DXVECTOR3(0.0f0.0f0.0f),          \
                    
            &D3DXVECTOR3(0.0f1.0f0.0f));
                  g_pd3dDevice
            ->SetTransform(D3DTS_VIEW, &matView);
                    否則沒(méi)有渲染結(jié)果。
            posted on 2008-07-14 20:48 林公子 閱讀(4683) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): DirectX
            久久91精品久久91综合| 51久久夜色精品国产| 精品久久久久一区二区三区| 精品久久久久久久中文字幕| 亚洲精品成人网久久久久久| 97久久综合精品久久久综合| 久久综合九色综合久99| www.久久热.com| 久久影院亚洲一区| 人妻少妇久久中文字幕一区二区| 久久国产精品久久久| 日韩影院久久| 久久精品国产精品亜洲毛片| 日本一区精品久久久久影院| 久久久国产精品亚洲一区| 精品国产99久久久久久麻豆| 久久精品一区二区三区中文字幕| 性欧美大战久久久久久久久| 伊人久久大香线蕉亚洲| 久久亚洲AV无码精品色午夜| 热久久视久久精品18| 久久久受www免费人成| 精品久久久久久久| 久久精品中文字幕无码绿巨人| 亚洲国产成人久久综合野外| 精品久久久久久无码中文野结衣| 国产精品久久久久aaaa| 国产精品久久波多野结衣| 2021久久精品国产99国产精品| 一本久久a久久精品亚洲| 亚洲国产精品无码久久青草| 久久久久久久久久免免费精品 | 欧洲人妻丰满av无码久久不卡| 久久久久亚洲AV成人网人人网站 | 狠狠色伊人久久精品综合网| 四虎国产永久免费久久| 97久久精品人人做人人爽| 久久久WWW成人免费毛片| 久久99精品国产99久久6| 久久久久国产一级毛片高清板| 久久毛片免费看一区二区三区|