青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿(mǎn)街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

D3DFVF淺談------ D3DFVF_XYZ 和 D3DFVF_XYZRHW 的區(qū)別

轉(zhuǎn)載自:http://hi.baidu.com/lovebirds/blog/item/33d450af4a2f19f3fbed509b.html


D3DFVF淺談

有些新手不知道什么是D3DFVF ,這里做個(gè)簡(jiǎn)單介紹,和一些應(yīng)用。但關(guān)于D3DFVF 最官方的資料還是看SDK(但它是英文的)。

D3DFVF_XYZ——頂點(diǎn)的三維坐標(biāo),表示有位置,而且會(huì)又Direct3D進(jìn)行矩陣變換;
D3DFVF_XYZRHW——即平時(shí)所說(shuō)rhw,它說(shuō)明頂點(diǎn)有位置,而且經(jīng)過(guò)了矩陣變換,不用在由Direct3D對(duì)它進(jìn)行變換,通常用于做UI(用戶(hù)界面);
D3DFVF_DIFFUSE——表示頂點(diǎn)格式中有漫反射顏色;
D3DFVF_NORMAL——表示頂點(diǎn)有法線向量;
D3DFVF_TEX^——表示頂點(diǎn)有紋理坐標(biāo),^可以是1至8,表示有多少套紋理坐標(biāo);

以上是最常用的D3DFVF了,如果還要更詳細(xì),請(qǐng)看SDK(一半以上的夠用了)。

還有一些應(yīng)用方法:
1、在創(chuàng)建VB時(shí),pd3dDevice->CreateVertexBuffer(3*sizeof(Vertex),D3DUSAGE_WRITEONLE,FVF,D3DPOOL_MANAGED,&先前聲明的VB,NULL);
在此之前還要先定義FVF:
#define FVF (D3DFVF_XYZ|D3DFVF_DIFFUSE)//這里隨自己需要
還要定義自己的頂點(diǎn)結(jié)構(gòu),這個(gè)FVF,頂點(diǎn)結(jié)構(gòu)可以這樣:
struct Vertex
{
float x,y,z;//對(duì)應(yīng)D3DFVF_XYZ
DWORD diffuse;//對(duì)應(yīng)D3DFVF_DIFFUSE
};

2、我們很多時(shí)候要用到ID3DXMesh,但它的頂點(diǎn)用矩陣變換還不夠,不能滿(mǎn)足骨骼動(dòng)畫(huà)的需求,所以只能用Vertex Shader和ID3DXMesh::LockVertexBuffer()了,這里重點(diǎn)說(shuō)LockVertexBuffer()。
首先,我們不知到Mesh的格式,如果貿(mào)然用LockVertexBuffer()會(huì)出錯(cuò),所以先統(tǒng)一Mesh的頂點(diǎn)格式:
ID3DXMesh Mesh;
..........
Mesh->CloneMeshFVF (D3DXMESH_MANAGED,D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DXFVF_TEX1),pdev,&Mesh);
重新定義結(jié)構(gòu)Vertex:
struct Vertex
{
float x,y,z;//對(duì)應(yīng)D3DFVF_XYZ
float nx,ny,nz;//對(duì)應(yīng)D3DFVF_NORMAL
DWORD diffuse;//對(duì)應(yīng)D3DFVF_DIFFUSE
float u,v;//對(duì)應(yīng)D3DFVF_TEX1
};
之后就可以Lock了:
Vertex *v;
int numV=Mesh->GetNumVertices();//Mesh的頂點(diǎn)數(shù)量
Mesh->LockVertexBuffer(NULL,(void**)&v);
for(int i=0;i<count;i++)
{
v[i].x+=5;//這里就是實(shí)現(xiàn),可以任意把v[i]的數(shù)據(jù)調(diào)整
}
Mesh->UnlockVertexBuffer();//解Lock

http://bbs.gameres.com/showthread.asp?threadid=29618

D3DFVF_XYZ 和 D3DFVF_XYZRHW 的區(qū)別

學(xué)習(xí)D3D9的時(shí)候遇到靈活頂點(diǎn)格式(FVF)中D3DFVF_XYZRHW和D3DFVF_XYZ之間差異而引起的問(wèn)題。
參看了同是C++博客的一篇博文,其分析如下:
在頂點(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)就在客戶(hù)區(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)的用戶(hù)區(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.0f, 1.33333f, 1.0f, 1000.0f);
g_pd3dDevice
->SetTransform(D3DTS_PROJECTION, &
matProj);

// Create and set the view matrix

D3DXMatrixLookAtLH(&matView, \
&D3DXVECTOR3(0.0f, 0.0f, -500.0f
), \
&D3DXVECTOR3(0.0f, 0.0f, 0.0f
), \
&D3DXVECTOR3(0.0f, 1.0f, 0.0f
));
g_pd3dDevice
->SetTransform(D3DTS_VIEW, &matView);

否則沒(méi)有渲染結(jié)果。

另外一個(gè)帖子:http://bbs.gameres.com/showthread.asp?threadid=121111

Re:D3DFVF_XYZRHW 中的W跟Z分別表示什么

D3DFVF_XYZRHW的格式是(x,y,z,1/w),RHW是指W的倒數(shù)。

使用這個(gè)格式的頂點(diǎn)是不通過(guò)頂點(diǎn)變換的,也就是直接對(duì)應(yīng)窗口設(shè)備坐標(biāo)系,這個(gè)坐標(biāo)系下Z的范圍是[0,1]

(x,y,z)的形式是仿射坐標(biāo),(x,y,z,w)的形式是齊次坐標(biāo),詳細(xì)的可以去看數(shù)學(xué)參考書(shū)。在這里由于已經(jīng)是設(shè)備坐標(biāo)系了,所以一般情況下w只用1.0。但如果是自己做的三維空間變換得到的坐標(biāo),那么w就很重要,因?yàn)樗糜诩y理的透視矯正。

最后一個(gè)帖子:http://hi.baidu.com/microsoftxiao/blog/item/4108ce58fab4ed87800a18f8.html

D3DFVF_XYZ D3DFVF_XYZRHW區(qū)別

D3DFVF_XYZ - 頂點(diǎn)格式包括未變換的頂點(diǎn)位置。這個(gè)標(biāo)記不能和D3DFVF_XYZRHW一起使用。
D3DFVF_XYZRHW - 頂點(diǎn)格式包括變換后的頂點(diǎn)位置。這個(gè)標(biāo)記不能和D3DFVF_XYZ或D3DFVF_NORMAL
一起使用。
[注意] 使用D3DFVF_XYZRHW時(shí),RHW分量應(yīng)設(shè)置為>=1.0f,只有這樣才表明該頂點(diǎn)為變換后的。

一定要了解DirectX SDK里DX90SDK\Samples\C++\Direct3D\Tutorials\Tut02_Vertices下的例子,
了解到D3DFVF_XYZ D3DFVF_XYZRHW的區(qū)別。




posted on 2010-11-20 23:58 楊粼波 閱讀(1113) 評(píng)論(0)  編輯 收藏 引用


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


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美在线观看网站| 亚洲精品少妇网址| 久久av一区| 久久岛国电影| 香港久久久电影| 亚洲综合国产激情另类一区| 亚洲视频高清| 午夜精品视频在线观看| 亚洲欧美一区二区三区极速播放 | 欧美大色视频| 麻豆国产精品一区二区三区| 欧美肥婆bbw| 日韩亚洲不卡在线| 久久精品国产亚洲一区二区三区| 老色鬼久久亚洲一区二区| 欧美激情一区二区三区在线视频观看 | 一色屋精品亚洲香蕉网站| 亚洲大片免费看| 日韩一区二区精品| 欧美在线精品一区| 欧美国产精品劲爆| 亚洲性夜色噜噜噜7777| 久久久青草青青国产亚洲免观| 欧美激情中文不卡| 国产欧美日韩视频一区二区三区 | 性刺激综合网| 欧美大片在线看免费观看| 一区二区高清| 久久在线视频| 国产午夜久久久久| 一区二区三区鲁丝不卡| 久久er99精品| 亚洲精品免费在线| 午夜免费在线观看精品视频| 欧美精品www| 国内一区二区三区在线视频| 中文欧美在线视频| 亚洲第一毛片| 久久久久久免费| 国产视频欧美视频| 欧美日韩第一页| 国产主播一区| 亚洲已满18点击进入久久| 欧美高清在线精品一区| 亚洲尤物在线| 国产精品久久久久久妇女6080 | 国产欧美韩国高清| 一区二区三区不卡视频在线观看 | 欧美区国产区| **性色生活片久久毛片| 欧美在线综合| 亚洲欧美日韩在线不卡| 欧美日韩国产首页| 亚洲三级电影全部在线观看高清| 久久在线免费观看视频| 欧美一级精品大片| 国产午夜亚洲精品不卡| 久久精品国产91精品亚洲| 亚洲免费在线看| 国产精品五区| 欧美在线高清视频| 亚洲欧美日韩网| 国产一区二区三区高清| 欧美专区在线观看一区| 性久久久久久| 国产一区二区三区久久久久久久久 | 国内精品国产成人| 久久国产精彩视频| 午夜精品影院在线观看| 国产麻豆精品视频| 久久黄色影院| 久久精品国产91精品亚洲| 狠狠色丁香婷婷综合| 麻豆成人综合网| 六月丁香综合| 在线视频亚洲一区| 亚洲在线视频网站| 有坂深雪在线一区| 亚洲日本欧美| 国产精品一区二区三区成人| 欧美在线视频免费观看| 久久激情综合网| 亚洲韩国日本中文字幕| 久久天天狠狠| 亚洲美女福利视频网站| 日韩一级成人av| 国产精品视屏| 欧美99久久| 欧美视频免费在线观看| 久久国产加勒比精品无码| 久久综合给合久久狠狠色 | 一本色道久久| 久久视频一区二区| 欧美国产免费| 欧美一区91| 久久精品免费观看| 在线一区二区三区四区| 亚洲一区二区黄色| 亚洲国产免费看| 亚洲欧美国产视频| 日韩手机在线导航| 欧美一级午夜免费电影| 亚洲国产一区二区a毛片| 一本色道久久综合精品竹菊 | 久热精品视频在线免费观看 | 日韩亚洲欧美一区二区三区| 亚洲综合日韩在线| 99热精品在线观看| 久久丁香综合五月国产三级网站| 在线一区二区视频| 久久中文精品| 欧美一区二区三区的| 欧美精品一区二区三区久久久竹菊| 久久久精品五月天| 国产精品视频网址| 亚洲精品九九| 在线日韩av片| 香蕉久久久久久久av网站| 中文国产一区| 欧美极品一区| 亚洲国产国产亚洲一二三| 国产一级精品aaaaa看| 亚洲无线一线二线三线区别av| 日韩天堂av| 欧美日韩国产精品一区二区亚洲| 欧美成人精品1314www| 精品不卡在线| 欧美一区二区三区在线观看| 欧美一区二区视频97| 国产精品毛片a∨一区二区三区|国| 日韩亚洲综合在线| av不卡在线看| 欧美福利一区二区三区| 免费高清在线一区| 好吊色欧美一区二区三区四区| 午夜精品久久久久| 欧美综合国产精品久久丁香| 国产精品一区久久久| 亚洲影视在线播放| 亚洲欧美日韩天堂| 国产精品热久久久久夜色精品三区| 一区二区三区久久| 亚洲一区精彩视频| 国产精品国产自产拍高清av王其 | 欧美午夜电影网| 99精品国产热久久91蜜凸| 亚洲美女中出| 欧美日韩三区四区| 亚洲一区二区av电影| 欧美一区二区在线看| 国产人久久人人人人爽| 久久精品久久综合| 亚洲欧美日韩成人高清在线一区| 久久国产精品第一页| 久久免费精品日本久久中文字幕| 国产一区二区三区高清| 久久久久久久成人| 欧美成人中文| 一本色道久久| 国产日韩欧美中文| 久久色中文字幕| 亚洲国产精品久久人人爱蜜臀| 一区二区三区欧美在线| 国产精品mm| 久久国产精品色婷婷| 亚洲国产日韩在线一区模特| 亚洲综合第一页| 伊人婷婷欧美激情| 欧美xart系列高清| 亚洲视频在线播放| 免费观看在线综合| 亚洲视频免费在线| 国产综合色产在线精品| 欧美激情综合五月色丁香| 亚洲一区二区四区| 欧美成人亚洲成人| 香蕉av福利精品导航| 亚洲第一区中文99精品| 欧美日韩精品免费在线观看视频 | 欧美福利一区二区| 亚洲网站视频| 女仆av观看一区| 午夜精品国产更新| 亚洲精品欧洲| 国产网站欧美日韩免费精品在线观看 | 日韩视频免费观看| 国产一二三精品| 欧美日韩专区| 久久亚洲春色中文字幕久久久 | 久热精品在线| 亚洲免费在线播放| 亚洲精选在线观看| 久久午夜精品一区二区| 午夜欧美视频| 亚洲视频福利| 99香蕉国产精品偷在线观看| 伊人春色精品| 国产一区二区电影在线观看 | 99国产精品视频免费观看| 欧美va天堂|