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

李錦俊(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)

我參與的團隊

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 373514
  • 排名 - 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>
            国产精品国色综合久久| 亚洲欧洲精品一区二区三区不卡 | 欧美一区深夜视频| 亚洲一区不卡| 久久精品国产999大香线蕉| 午夜影院日韩| 久久久噜噜噜久久人人看| 久久久久.com| 欧美国产第一页| 日韩亚洲欧美一区| 欧美一区二区三区久久精品| 欧美一级一区| 欧美成人一区二区三区| 国产精品久久久久久久app| 国产深夜精品福利| 亚洲黄色片网站| 亚洲欧美日本视频在线观看| 久久噜噜噜精品国产亚洲综合| 欧美不卡在线| 亚洲九九精品| 亚洲综合色网站| 久久久综合香蕉尹人综合网| 欧美精品观看| 激情成人中文字幕| 亚洲永久免费av| 久久综合中文| 亚洲无线视频| 欧美—级a级欧美特级ar全黄| 国产精品区一区二区三区| 亚洲成人资源网| 欧美亚洲一区| 亚洲人成网站精品片在线观看| 99热免费精品在线观看| 午夜精品视频在线观看一区二区| 久久中文欧美| 亚洲免费伊人电影在线观看av| 久久夜色精品| 国产日韩精品视频一区| 亚洲日本va午夜在线影院| 久久国产精品99国产| 亚洲精品久久久久久久久久久久| 欧美一区二区三区视频免费| 欧美日韩日本视频| 亚洲激情av在线| 久久国产黑丝| 亚洲视屏在线播放| 欧美日韩在线观看一区二区| 亚洲成色999久久网站| 欧美一区二区三区在线免费观看| 亚洲国产日日夜夜| 另类图片国产| 韩国精品一区二区三区| 午夜日本精品| 亚洲香蕉网站| 国产伦精品一区二区三区四区免费 | 模特精品裸拍一区| 欧美影院精品一区| 国产日韩欧美综合精品| 香蕉久久国产| 亚洲综合日韩中文字幕v在线| 欧美三级电影网| 久久蜜桃精品| 韩国av一区二区三区在线观看| 久久av一区二区三区| 亚洲一区国产视频| 国产精品日韩电影| 欧美一级久久久| 欧美一区二区三区免费在线看 | 亚洲精品国产拍免费91在线| 欧美α欧美αv大片| 欧美在线一级视频| 在线观看亚洲精品视频| 欧美国产欧美亚洲国产日韩mv天天看完整 | 久久综合福利| 91久久久一线二线三线品牌| 欧美成人高清| 欧美精品国产一区二区| 中文网丁香综合网| 日韩视频在线永久播放| 亚洲视频在线观看| 国产伦精品一区二区三区免费迷| 亚洲已满18点击进入久久| 亚洲视频在线看| 国内精品一区二区| 欧美激情欧美激情在线五月| 欧美激情导航| 欧美在线网址| 模特精品在线| 香蕉久久久久久久av网站| 久久久久久香蕉网| 亚洲视频第一页| 久久狠狠久久综合桃花| 日韩一区二区免费看| 亚洲影院免费| 亚洲精品一区在线观看香蕉| 国产精品99久久99久久久二8| 国产一区二区三区久久 | 国产美女精品人人做人人爽| 久久免费视频这里只有精品| 欧美成人一区二区三区在线观看| 亚洲欧美激情视频在线观看一区二区三区 | 91久久在线观看| 亚洲欧美高清| 日韩视频免费观看高清在线视频| 正在播放亚洲| 亚洲精品日韩综合观看成人91| 亚洲私人影院| 亚洲剧情一区二区| 久久久久久九九九九| 亚洲图片欧洲图片av| 久久亚洲春色中文字幕| 欧美一二三视频| 欧美日韩一区自拍| 欧美高清hd18日本| 黄色日韩网站| 香蕉视频成人在线观看 | 国产一区日韩二区欧美三区| 亚洲国产高清视频| 国产亚洲欧美一级| 在线综合亚洲| 夜夜嗨av色综合久久久综合网| 久久国产直播| 欧美综合国产精品久久丁香| 国产精品v欧美精品∨日韩| 亚洲国产电影| 亚洲高清不卡| 久久久av网站| 久久久999精品免费| 国产精品成人播放| 99re66热这里只有精品3直播| 亚洲欧洲三级| 欧美电影美腿模特1979在线看 | 亚洲免费观看视频| 久久精品亚洲| 久久深夜福利免费观看| 国产精品亚洲第一区在线暖暖韩国| 亚洲国产毛片完整版| 亚洲国产一区二区在线| 久久综合色影院| 欧美激情区在线播放| 亚洲高清在线播放| 免费看黄裸体一级大秀欧美| 男人天堂欧美日韩| 亚洲国产精品久久久| 免费视频久久| 亚洲品质自拍| 亚洲一级片在线观看| 欧美午夜一区二区福利视频| 一区二区三区福利| 欧美在线关看| 激情久久综合| 久久婷婷麻豆| 91久久国产综合久久| 一本色道**综合亚洲精品蜜桃冫| 欧美日韩国产首页在线观看| 中日韩美女免费视频网站在线观看| 亚洲宅男天堂在线观看无病毒| 国产精品一区二区三区久久| 欧美在线视频观看免费网站| 米奇777超碰欧美日韩亚洲| 亚洲经典在线| 国产精品久久久久久久9999| 欧美亚洲一区二区在线| 欧美大片免费观看| 亚洲一本视频| 极品日韩av| 欧美日韩亚洲高清一区二区| 亚洲欧洲av一区二区三区久久| 久久久亚洲高清| 亚洲精品久久久久久一区二区| 欧美日韩一级黄| 久久成人综合视频| 亚洲毛片在线| 久久一区欧美| 亚洲午夜电影| 亚洲高清久久久| 国产精品久久| 免费观看成人www动漫视频| 在线视频日本亚洲性| 久久视频免费观看| 亚洲午夜精品久久| 亚洲国产99精品国自产| 国产精品二区二区三区| 久热精品视频在线观看| 亚洲综合999| 亚洲精品免费一区二区三区| 久久久久久久久伊人| 亚洲视频一区在线| 亚洲激情电影在线| 国模私拍一区二区三区| 国产精品久久久久久一区二区三区| 久久久久一区二区| 亚洲综合精品一区二区| 亚洲欧洲在线观看| 久久综合狠狠综合久久综合88| 亚洲一区视频| 一区二区三区免费网站| 亚洲国产日韩在线一区模特| 国产亚洲欧美一区| 国产精品亚洲人在线观看|