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

李錦俊(mybios)的blog

游戲開發 C++ Cocos2d-x OpenGL DirectX 數學 計算機圖形學 SQL Server

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  86 Posts :: 0 Stories :: 370 Comments :: 0 Trackbacks

公告

QQ:30743734
EMain:mybios@qq.com

常用鏈接

留言簿(16)

我參與的團隊

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 373511
  • 排名 - 67

最新評論

閱讀排行榜

評論排行榜

??1 #include? < D3DX9.h >
??2 #include? < string >
??3 typedef?std:: string ?String;
??4 #define ?SAFE_RELEASE(o)?{if(o){o->Release();o?=?0;}}
??5
??6
??7 LPDIRECT3D9?g_pD3D? = ? 0 ;???????????????? // ?D3D?Driver
??8 LPDIRECT3DDEVICE9?g_pd3dDevice? = ? 0 ;???? // ?D3D?設備
??9 D3DCAPS9?g_Caps? = ? {(D3DDEVTYPE) 0 } ;???? // ?D3D?的帽子
?10 LPDIRECT3DVERTEXBUFFER9?g_pVB? = ? 0 ;???? // ?頂點緩沖區
?11 LPDIRECT3DINDEXBUFFER9?g_pIB? = ? 0 ;???? // ?索引緩沖區
?12 LPDIRECT3DTEXTURE9?g_pTexture? = ? 0 ;???? // ?貼圖
?13
?14 // ?頂點定義
?15 #define ?D3DFVF_CUSTOMVERTEX?(D3DFVF_XYZ?|?D3DFVF_DIFFUSE?|?D3DFVF_TEX1)
?16 struct ?CUSTOMVERTEX
?17 {
?18 ????D3DXVECTOR3?position;
?19 ????D3DCOLOR?color;
?20 ???? float ?u?,?v;
?21 }
;
?22
?23 // ?錯誤記錄
?24 void ?D3DErr(String?strMsg)
?25 {
?26 ????MessageBox( 0 ?,?strMsg.c_str()?,? " 錯誤 " ?,?MB_OK);
?27 }

?28
?29 // ?初始化頂點緩沖區
?30 HRESULT?InitVB()
?31 {
?32 ???? // ?創建頂點緩沖區
?33 ???? if (FAILED(g_pd3dDevice -> CreateVertexBuffer( 4 ? * ? sizeof (CUSTOMVERTEX)?,? 0 ?,?D3DFVF_CUSTOMVERTEX?,?D3DPOOL_DEFAULT?,? & g_pVB?,? 0 )))
?34 ???????? return ?E_FAIL;
?35
?36 ????CUSTOMVERTEX? * pVertecies;
?37 ???? // ?鎖定緩沖區
?38 ???? if (SUCCEEDED(g_pVB -> Lock( 0 ?,? 0 ?,?( void ** ) & pVertecies?,? 0 )))
?39 ???? {
?40 ????????pVertecies[ 0 ].position? = ?D3DXVECTOR3( - 1 ?,? 1 ?,? 0 );
?41 ????????pVertecies[ 1 ].position? = ?D3DXVECTOR3( - 1 ?,? - 1 ?,? 0 );
?42 ????????pVertecies[ 2 ].position? = ?D3DXVECTOR3( 1 ?,? 1 ?,? 0 );
?43 ????????pVertecies[ 3 ].position? = ?D3DXVECTOR3( 1 ?,? - 1 ?,? 0 );
?44
?45 ????????pVertecies[ 0 ].u? = ? 0 ;
?46 ????????pVertecies[ 0 ].v? = ? 0 ;
?47
?48 ????????pVertecies[ 1 ].u? = ? 0 ;
?49 ????????pVertecies[ 1 ].v? = ? 1 ;
?50
?51 ????????pVertecies[ 2 ].u? = ? 1 ;
?52 ????????pVertecies[ 2 ].v? = ? 0 ;
?53
?54 ????????pVertecies[ 3 ].u? = ? 1 ;
?55 ????????pVertecies[ 3 ].v? = ? 1 ;
?56
?57 ????????pVertecies[ 0 ].color? = ? 0xFFFFFFFF ;
?58 ????????pVertecies[ 1 ].color? = ? 0xFFFFFFFF ;
?59 ????????pVertecies[ 2 ].color? = ? 0xFFFFFFFF ;
?60 ????????pVertecies[ 3 ].color? = ? 0xFFFFFFFF ;
?61 ????????g_pVB -> Unlock();
?62 ????}

?63 ???? else
?64 ???? {
?65 ???????? return ?E_FAIL;
?66 ????}

?67
?68 ???? // ?載入紋理
?69 ???? if (FAILED(D3DXCreateTextureFromFile(g_pd3dDevice?,? " ..\\..\\Media\\BRICE.JPG " ?,? & g_pTexture)))
?70 ???? {
?71 ????????D3DErr( " 無法載入紋理Brice.jpg " );
?72 ???????? return ?E_FAIL;
?73 ????}

?74 ???? return ?S_OK;
?75 }

?76
?77 // ?初始化模型
?78 HRESULT?InitGeometry()
?79 {
?80 ???? // ?創建頂點緩沖區
?81 ???? if (FAILED(InitVB()))
?82 ???????? return ?E_FAIL;
?83 ???? return ?S_OK;
?84 }

?85
?86 // ?設置矩陣變換
?87 void ?SetTransform()
?88 {
?89
?90 ???? // ?世界變換
?91 ????D3DXMATRIX?matWorld?,?matT1?,?matT2?,?matR;
?92 ????D3DXMatrixIdentity( & matWorld);
?93 ???? // ?設置世界矩陣
?94 ????g_pd3dDevice -> SetTransform(D3DTS_WORLD?,? & matWorld);
?95 ???? // ?Set?up?our?view?matrix.?A?view?matrix?can?be?defined?given?an?eye?point,
?96 ???? // ?a?point?to?lookat,?and?a?direction?for?which?way?is?up.?Here,?we?set?the
?97 ???? // ?eye?five?units?back?along?the?z-axis?and?up?three?units,?look?at?the
?98 ???? // ?origin,?and?define?"up"?to?be?in?the?y-direction.
?99 ???? // ?視口變換
100 ????D3DXMATRIX?matView;
101 ????D3DXMatrixLookAtLH( & matView?,? & D3DXVECTOR3( 0 ?,? 0 ?,? - 5 )
102 ????????,? & D3DXVECTOR3( 0 ?,? 0 ?,? 0 )?
103 ????????,? & D3DXVECTOR3( 0 ?,? 1 ?,? 0 ));
104 ????g_pd3dDevice -> SetTransform(D3DTS_VIEW?,? & matView);
105 ???? // ?For?the?projection?matrix,?we?set?up?a?perspective?transform?(which
106 ???? // ?transforms?geometry?from?3D?view?space?to?2D?viewport?space,?with
107 ???? // ?a?perspective?divide?making?objects?smaller?in?the?distance).?To?build
108 ???? // ?a?perpsective?transform,?we?need?the?field?of?view?(1/4?pi?is?common),
109 ???? // ?the?aspect?ratio,?and?the?near?and?far?clipping?planes?(which?define?at
110 ???? // ?what?distances?geometry?should?be?no?longer?be?rendered).
111 ????D3DXMATRIXA16?matProj;
112 ???? // ?這里我曾經犯了個大錯!!把ZNear的參數傳0進去了!這樣會導致一個很嚴重的問題。。你試試就知道。但是我想不通為何會出現這個問題。。我笨啊
113 ????D3DXMatrixPerspectiveFovLH(? & matProj,?D3DX_PI / 4 ,? 1.0f ,? 1.0f ,? 100.0f ?);
114 ????g_pd3dDevice -> SetTransform(?D3DTS_PROJECTION,? & matProj?);
115
116 ???? // ?紋理坐標平移
117 ????D3DXMATRIXA16?matTexture;
118 ????D3DXMatrixIdentity( & matTexture);
119 ???? // ?要使用3*3矩陣來平移2D紋理,所以要設置31來平移。不懂為什么要設置31的話看看《計算機圖形學》的2D變換那章
120 ????matTexture._31? = ?timeGetTime()? % ? 3000 ? / ? 1500.0f ;
121 ????g_pd3dDevice -> SetTransform(D3DTS_TEXTURE0?,? & matTexture);
122
123 }

124
125 // ?渲染場景
126 void ?Render()
127 {
128 ???? if (g_pd3dDevice)
129 ???? {
130 ???????? // ?清空場景
131 ????????g_pd3dDevice -> Clear( 0 ?,? 0 ?,?D3DCLEAR_TARGET? | ?D3DCLEAR_ZBUFFER?,?D3DCOLOR_XRGB( 0 ?,? 0 ?,? 0 )?,? 1 ?,? 0 );
132 ???????? // ?開始渲染
133 ???????? if (SUCCEEDED(g_pd3dDevice -> BeginScene()))
134 ???????? {
135 ????????????SetTransform();
136 ????????????g_pd3dDevice -> SetTexture( 0 ?,?g_pTexture);
137 ???????????? // ?要想用矩陣來平移2D紋理,必須設置D3DTSS_TEXTURETRANSFORMFLAGS成D3DTTFF_COUNT2
138 ????????????g_pd3dDevice -> SetTextureStageState( 0 ,?D3DTSS_TEXTURETRANSFORMFLAGS,?D3DTTFF_COUNT2);
139 ???????????? // ?這句在這里可有可無
140 ????????????g_pd3dDevice -> SetTextureStageState( 0 ,?D3DTSS_TEXCOORDINDEX,? 0 );
141 ????????????
142 ????????????g_pd3dDevice -> SetSamplerState( 0 ?,?D3DSAMP_ADDRESSU?,?D3DTADDRESS_MIRROR);
143 ????????????g_pd3dDevice -> SetSamplerState( 0 ?,?D3DSAMP_ADDRESSV?,?D3DTADDRESS_MIRROR);
144 ????????????g_pd3dDevice -> SetRenderState(D3DRS_LIGHTING?,?FALSE);
145 ???????????? // g_pd3dDevice->SetRenderState(D3DRS_FILLMODE?,?D3DFILL_WIREFRAME);
146 ????????????g_pd3dDevice -> SetStreamSource( 0 ?,?g_pVB?,? 0 ?,? sizeof (CUSTOMVERTEX));
147 ????????????g_pd3dDevice -> SetFVF(D3DFVF_CUSTOMVERTEX);
148 ????????????g_pd3dDevice -> DrawPrimitive(D3DPT_TRIANGLESTRIP?,? 0 ?,? 2 );
149 ????????????g_pd3dDevice -> EndScene();
150 ????????}

151 ???????? // ?顯示
152 ????????g_pd3dDevice -> Present( 0 ?,? 0 ?,? 0 ?,? 0 );
153 ????}

154 }

155
156 // ?初始化?D3D?設備
157 HRESULT?InitD3D(HWND?hWnd)
158 {
159 ???? // ?創建?D3D?Driver
160 ???? if (NULL? == ?(g_pD3D? = ?Direct3DCreate9(D3D_SDK_VERSION)))
161 ???? {
162 ????????D3DErr( " 無法創建Direct3D9設備 " );
163 ???????? return ?E_FAIL;
164 ????}

165 ???? // ?獲取當前顯示模式
166 ????D3DDISPLAYMODE?d3ddm;
167 ???? if (FAILED(g_pD3D -> GetAdapterDisplayMode(D3DADAPTER_DEFAULT?,? & d3ddm)))
168 ???? {
169 ????????D3DErr( " 無法獲取D3D顯示器模式 " );
170 ???????? return ?E_FAIL;
171 ????}

172
173 ???? // ?獲取窗口的大小
174 ????RECT?rect;
175 ????GetClientRect(hWnd?,? & rect);
176
177 ???? // ?填充參數
178 ????D3DPRESENT_PARAMETERS?d3dpp;
179 ????memset( & d3dpp?,? 0 ?,? sizeof (d3dpp));
180 ????d3dpp.BackBufferFormat? = ?d3ddm.Format;
181 ????d3dpp.BackBufferWidth? = ?rect.right? - ?rect.left;
182 ????d3dpp.BackBufferHeight? = ?rect.bottom? - ?rect.top;
183 ????d3dpp.SwapEffect? = ?D3DSWAPEFFECT_DISCARD;
184 ????d3dpp.Windowed? = ? true ;
185 ????d3dpp.AutoDepthStencilFormat? = ?D3DFMT_D16;
186 ????d3dpp.EnableAutoDepthStencil? = ?TRUE;
187
188 ???? // ?獲取帽子
189 ???? if (FAILED(g_pD3D -> GetDeviceCaps(D3DADAPTER_DEFAULT?,?D3DDEVTYPE_HAL?,? & g_Caps)))
190 ???? {
191 ????????D3DErr( " 獲取D3D?帽子時發生錯誤 " );
192 ???????? return ?E_FAIL;
193 ????}

194
195 ???? // ?創建D3D設備
196 ???? if (FAILED(g_pD3D -> CreateDevice(D3DADAPTER_DEFAULT
197 ????????,?D3DDEVTYPE_HAL
198 ????????,?hWnd
199 ???????? // ?檢查是否支持硬件頂點處理
200 ????????,?g_Caps.DevCaps? & ?D3DDEVCAPS_HWTRANSFORMANDLIGHT? ? ?D3DCREATE_HARDWARE_VERTEXPROCESSING?:?D3DCREATE_SOFTWARE_VERTEXPROCESSING
201 ????????,? & d3dpp
202 ????????,? & g_pd3dDevice
203 ????????)
204 ????????))
205 ???? {
206 ????????D3DErr( " 創建D3D設備時發生錯誤 " );
207 ???????? return ?E_FAIL;
208 ????}

209 ????g_pd3dDevice -> SetRenderState(?D3DRS_CULLMODE,?D3DCULL_NONE?);
210 ????g_pd3dDevice -> SetRenderState(?D3DRS_ZENABLE,?TRUE?);
211
212 ???? if (FAILED(InitGeometry()))
213 ???????? return ?E_FAIL;
214 ???? return ?S_OK;
215 }

216
217 // ?清空所有占用的資源
218 void ?CleanUp()
219 {
220 ????SAFE_RELEASE(g_pTexture);
221 ????SAFE_RELEASE(g_pIB);
222 ????SAFE_RELEASE(g_pVB);
223 ????SAFE_RELEASE(g_pd3dDevice);
224 ????SAFE_RELEASE(g_pD3D);
225 }

226
227
228 // ?消息處理
229 LRESULT?WINAPI?MsgProc(HWND?hWnd?,?UINT?message?,?WPARAM?wParam?,?LPARAM?lParam)
230 {
231 ???? switch (message)
232 ???? {
233 ???? case ?WM_DESTROY:
234 ????????CleanUp();
235 ????????PostQuitMessage( 0 );
236 ???????? break ;
237 ????}

238 ???? return ?::DefWindowProc(hWnd,?message?,?wParam?,?lParam);
239 }

240
241 // ?Windows?入口
242 int ?WINAPI?WinMain(IN?HINSTANCE?hInstance,?IN?HINSTANCE?hPrevInstance,?IN?LPSTR?lpCmdLine,?IN? int ?nShowCmd?)
243 {
244 ????WNDCLASS?wndClass;
245 ????memset( & wndClass?,? 0 ?,? sizeof (wndClass));
246 ????wndClass.hInstance? = ?hInstance;
247 ????wndClass.lpszClassName? = ? " Tutorial02 " ;
248 ????wndClass.lpfnWndProc? = ?MsgProc;
249 ????RegisterClass( & wndClass);
250
251 ???? // ?創建窗口
252 ????HWND?hWnd? = ?CreateWindow( " Tutorial02 " ?,? " Tutorial02?Texture?Scrolling " ?
253 ????????,?WS_OVERLAPPEDWINDOW?,? 0 ?,? 0 ?,? 512 ?, 512 ?,?GetDesktopWindow()
254 ????????,? 0 ?,?wndClass.hInstance?,? 0 );
255 ???? // ?顯示窗口
256 ????ShowWindow(hWnd?,?SW_SHOWDEFAULT);
257 ????UpdateWindow(hWnd);
258
259 ???? // ?初始化?D3D?設備
260 ???? if (SUCCEEDED(InitD3D(hWnd)))
261 ???? {
262 ???????? // ?消息處理循環
263 ????????MSG?msg;
264 ????????memset( & msg?,? 0 ?,? sizeof (msg));
265 ???????? while (msg.message? != ?WM_QUIT)
266 ???????? {
267 ???????????? if (PeekMessage( & msg?,? 0 ?,? 0 ?,? 0 ?,?PM_REMOVE))
268 ???????????? {
269 ????????????????TranslateMessage( & msg);
270 ????????????????DispatchMessage( & msg);
271 ????????????}

272 ???????????? else
273 ???????????? {
274 ????????????????Render();
275 ????????????}

276 ????????}

277 ????}

278 ???? // ?清空場景
279 ????CleanUp();
280
281 ????UnregisterClass( " Tutorial02 " ?,?wndClass.hInstance);
282
283 ???? return ? 0 ;
284 }
posted on 2006-11-16 11:15 李錦俊(mybios) 閱讀(1362) 評論(1)  編輯 收藏 引用 所屬分類: Direct3D

Feedback

# re: 【原創】《DirectX 9 3D 圖形程序設計》 Tutorial 06 紋理貼圖以及紋理坐標變換(紋理動畫) 2007-12-22 10:13 zhangyb
請問,我要給我的模型重新貼圖,或者更改已有 的貼圖應該是怎么做?
是應該 release掉 materials嗎?
然后重新 creatematerials嗎?

多謝有誰可以給我說說,跪謝  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美日韩免费观看一区二区三区 | 亚洲第一黄网| 欧美日韩一区二区三区四区五区| 欧美黄色免费| 欧美精品在线观看一区二区| 欧美区一区二区三区| 国产亚洲午夜| 亚洲午夜精品福利| 一本色道久久综合亚洲精品高清 | 欧美国产日韩精品免费观看| 欧美激情片在线观看| 欧美午夜精品理论片a级大开眼界| 国产精品视频你懂的| 国语自产精品视频在线看一大j8| 亚洲国产精品视频一区| 在线一区二区三区四区五区| 欧美怡红院视频| 久久久久久久一区| 欧美激情视频一区二区三区免费| 最近看过的日韩成人| 亚洲人午夜精品| 午夜精品在线| 欧美成人视屏| 国产日产欧产精品推荐色| 亚洲人精品午夜| 久久激情综合网| 亚洲人成毛片在线播放女女| 亚洲欧美久久| 欧美日韩成人激情| 狠狠色狠狠色综合人人| 亚洲一区二区三区在线看 | 亚洲特级毛片| 老司机67194精品线观看| 国产精品久久99| 亚洲日本中文字幕| 久久美女性网| 午夜电影亚洲| 国产精品久久中文| 99re热这里只有精品视频| 久久免费观看视频| 亚洲欧美视频一区| 国产精品久久久久久久久免费樱桃| 亚洲人成在线免费观看| 你懂的国产精品永久在线| 欧美在线视频不卡| 国产偷久久久精品专区| 欧美亚洲视频在线看网址| 99国产一区| 欧美日韩国产bt| 一本久道久久综合狠狠爱| 亚洲电影网站| 欧美国产日韩一区二区| 亚洲精品影视| 亚洲理伦电影| 欧美亚一区二区| 亚洲视频专区在线| 日韩视频欧美视频| 欧美日韩一区二区三区| 亚洲深夜福利网站| 一本久道久久综合狠狠爱| 亚洲综合色在线| 欧美一级专区| 亚洲在线成人精品| 欧美性猛交视频| 亚洲欧美成人网| 亚洲午夜精品久久久久久app| 欧美午夜精品| 久久精品国产999大香线蕉| 性欧美18~19sex高清播放| 国产精品一区一区| 久久精品视频在线观看| 欧美一级午夜免费电影| 国产亚洲欧洲| 欧美成人日本| 欧美日韩一级视频| 欧美一区二区在线免费播放| 亚洲综合色丁香婷婷六月图片| 国产精品久久久久久模特| 西西裸体人体做爰大胆久久久| 亚洲一级在线| 怡红院精品视频| 亚洲人成亚洲人成在线观看图片 | 欧美一区二区三区在线观看视频| 国产午夜精品福利| 欧美大尺度在线| 欧美日韩一二区| 久久久精彩视频| 欧美成人午夜免费视在线看片 | 欧美日韩一区二区在线观看视频 | 欧美激情中文字幕乱码免费| 亚洲一区二区精品| 久久精品人人做人人爽| 亚洲毛片播放| 午夜激情综合网| 亚洲欧洲综合另类在线| 亚洲视频二区| 亚洲国产一区二区三区在线播 | 欧美不卡视频| 国产精品美女久久久久久久| 麻豆精品一区二区综合av | 国产欧美日韩| 亚洲人成毛片在线播放女女| 国产日韩精品一区二区三区| 亚洲国产91精品在线观看| 国产精品视频自拍| 亚洲国产精品一区二区尤物区 | 欧美一级免费视频| 亚洲一区二区三区四区五区午夜 | 国产精品免费视频xxxx| 久久性天堂网| 国产精品美女黄网| 亚洲精品乱码久久久久久蜜桃91 | 国产精品福利在线观看| 美女国产一区| 国产伦精品一区| 99精品欧美一区二区三区综合在线 | 欧美激情小视频| 国产区在线观看成人精品| 亚洲精品国产精品久久清纯直播 | 亚洲日本黄色| 久久久精品视频成人| 欧美一二区视频| 欧美日韩在线播放三区| 亚洲第一精品夜夜躁人人爽| 国产在线播放一区二区三区| 亚洲图片欧美一区| 夜夜夜久久久| 欧美另类videos死尸| 欧美黑人一区二区三区| 激情av一区| 久久久99爱| 麻豆九一精品爱看视频在线观看免费| 国产日产欧产精品推荐色| 亚洲一区二区三区三| 亚洲免费视频中文字幕| 国产精品第一区| 一区二区三区四区在线| 亚洲视频你懂的| 欧美日本在线一区| 亚洲乱亚洲高清| 亚洲女性裸体视频| 欧美三级午夜理伦三级中视频| 亚洲人www| 亚洲一区二区三| 国产精品一区二区久久国产| 午夜伦理片一区| 久久夜色精品一区| 亚洲黄页视频免费观看| 欧美激情片在线观看| 国产精品99久久久久久人| 欧美一区二区女人| 一区免费观看视频| 欧美国产一区二区| 亚洲一区二区毛片| 久久综合导航| 日韩视频在线永久播放| 国产精品爱啪在线线免费观看| 亚洲欧美日韩在线| 欧美aa国产视频| 中文有码久久| 国产亚洲激情在线| 免费在线播放第一区高清av| 亚洲免费不卡| 久久视频这里只有精品| 亚洲欧洲日韩综合二区| 欧美三日本三级少妇三99| 欧美一级视频精品观看| 亚洲国产成人不卡| 亚洲综合成人婷婷小说| 国产一区二区三区黄视频| 欧美亚州在线观看| 亚洲人成啪啪网站| 欧美视频一区二区三区在线观看| 亚洲一区二区免费| 欧美国产第二页| 午夜精品久久久久久久白皮肤| 国模叶桐国产精品一区| 欧美激情第一页xxx| 亚洲一区二区伦理| 亚洲国产精品第一区二区| 亚洲午夜视频在线观看| 狠狠色噜噜狠狠色综合久| 欧美精品网站| 久久久精品国产免费观看同学| 夜夜嗨网站十八久久| 噜噜噜在线观看免费视频日韩 | 日韩网站在线看片你懂的| 国产欧美日本一区视频| 欧美激情成人在线视频| 小处雏高清一区二区三区| 亚洲国产老妈| 老司机aⅴ在线精品导航| 亚洲欧美日韩爽爽影院| 亚洲麻豆视频| 亚洲国产高清视频| 国产在线成人| 国产精品一区二区你懂得| 欧美日韩国产在线看| 欧美不卡高清| 麻豆av一区二区三区久久|