多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > DirectX游戲編程心得之:使用2-D坐標顯示2-D圖形的注意事項

DirectX游戲編程心得之:使用2-D坐標顯示2-D圖形的注意事項

來源:程序員人生   發布時間:2014-10-08 20:23:51 閱讀次數:3170次

        最近打算做幾款2-D小游戲,當然是用Direct3D來做的,所以就要使用Direct3D提供的2D頂點了。說是2D頂點,其實卻有4個分量!而正是因為這種矛盾性,所以使用起來有不少注意事項。這些是我浪費了很多的青春而發現的,希望大家吸取教訓啊!

        具體來說,有這么幾個方面的注意事項:

 

1、 2-D頂點結構的定義

   

        比如,要定義一個帶紋理坐標的2-D頂點結構,那么應該定義如下:

struct Vertex2DTex { Vertex2DTex():pos2D(0.0f, 0.0f, 1.0f, 1.0f), texCoord(0.0f, 0.0f){} Vertex2DTex(floatx, float y, float u, float v) : pos2D(x,y, 1.0f, 1.0f), texCoord(u, v) {} Vertex2DTex(floatx, float y, float z, float rhw, float u, float v) : pos2D(x,y, z, rhw), texCoord(u, v){} Vertex2DTex(const D3DXVECTOR4& thePos2D, const D3DXVECTOR2& uv) : pos2D(thePos2D),texCoord(uv){} inline Vertex2DTex& operator=(const Vertex2DTex& rhs) { if(this != &rhs) { pos2D= rhs.pos2D; texCoord= rhs.texCoord; } return*this; } D3DXVECTOR4 pos2D; D3DXVECTOR2 texCoord; static IDirect3DVertexDeclaration9* Decl; };

2、 2-D頂點的聲明

 

        比如,針對上述頂點結構,那么聲明如下:

IDirect3DVertexDeclaration9* Vertex2DTex::Decl= 0; //=============================================================== // Vertex2DTex D3DVERTEXELEMENT9 Vertex2DTexElements[]= { {0, 0, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITIONT, 0 }, { 0,sizeof(D3DXVECTOR4), D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD,0 }, D3DDECL_END() }; gd3dDevice->CreateVertexDeclaration(Vertex2DTexElements, &Vertex2DTex::Decl);


        當然,最后不要忘了釋放 Vertex2DTex::Decl 對象。

 

        PS:我們用一個4維向量來表示一個2-D坐標。如果用的是以前的FVF格式的頂點聲明的話,那么會看到這個2-D坐標是x, y, z, rhw。其中,x, y是頂點的屏幕坐標,z表示頂點的深度信息(這樣可以實現Z-Buffer 測試),而rhw似乎總是設為1.0。

 

3、 使用2-D頂點結構時,在設置D3DPRESENT_PARAMETERS時的注意事項

   

        設md3dPP 是一個D3DPRESENT_PARAMETERS 對象,那么除非有特殊需要,否則這樣設值:

md3dPP.EnableAutoDepthStencil = false;

        這樣,不論2-D坐標的z值為0.0和1.0之間的哪個值,都可以在屏幕上顯示出來(除非被遮擋)。

 

4、 針對2-D頂點使用effect

 

        使用2-D頂點時,也可以使用effect file,但是這時候的technique 只由PixelShader  組成,因為2-D頂點是變換后的頂點了,不能夠對其再進行變換了。所以,事實上,除非你想要對顏色本身做一些處理(比如說轉換成黑白畫面),否則基本上是不需要對2-D頂點使用effect file 的。

        不過,如果一定要使用的話,那么PixelShader 的參數為2-D頂點結構中除了2-D坐標以外的那些成分。


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 九九精品成人免费国产片 | 波多野结衣免费一区二区三区香蕉 | 日本高清www无色夜在 | 大陆60老妇xxxxhd | 日韩精品片 | 最近中文字幕国语免费高清6 | 中文字幕日韩精品中文区 | 女人的天堂网 | 亚洲精品久久一区二区无卡 | 亚州三级视频 | 亚洲视频在线一区二区三区 | 欧美性猛交xxxx乱大交极品 | 国产成人小视频在线观看 | 久久亚洲精品无码观看不卡 | 成人一区二区免费中文字幕 | 国产免费a v吧在线观看不卡 | 欧美一区二区三区成人看不卡 | 最新自拍偷拍 | www视频在线观看免费 | 国产精品乱码一区二区三区 | 男女激情视频软件 | 高清 国产 日韩 欧美 | 三级黄在线 | 欧洲成人在线视频 | 最近的中文字幕视频完整 | 亚洲午夜精品久久久久久成年 | 视频免费视频观看网站 | 日韩 国产 在线 | 亚洲一区二区三区久久久久 | 激情欧美乱妇 | 亚洲精品综合一二三区在线 | 中文综合 | 久久99国产精品成人 | 六月亚洲精品一区 | 精品国产美女福利在线 | 国产亚洲精品激情一区二区三区 | 欧美日韩一区二区综合 | 一区二区三区四区免费视频 | 动漫精品欧美一区二区三区 | 欧美成人精品一区二三区在线观看 | 国产美女久久久 |