#include<
d3d9.h
>
#include
<
d3dx9.h
>
#pragma
comment(lib, "d3d9.lib")
#pragma
comment(lib, "d3dx9.lib")
#define
window_class "ugpdx"
#define
window_name "world matrix"
#define
window_width 640
#define
window_height 480
//function prototypes...
bool
initialized3d(hwnd hwnd,
bool
fullscreen);
bool
initializeobjects();
void
renderscene();
void
shutdown();
//direct3d object and device.
lpdirect3d9 g_d3d
=null;
lpdirect3ddevice9 g_d3ddevice
=null;
d3dxmatrix g_projection;
d3dxmatrix g_worldmatrix;
d3dxmatrix g_translation;
d3dxmatrix g_rotation;
float
g_angle
=0.0f;//
vertex buffer to hold the geometry.
lpdirect3dvertexbuffer9 g_vertexbuffer
=null;
//a structure for our custom vertex type
struct
std3dvertex;//
our custom fvf, which describes our custom vertex structure
#define
d3dfvf_vertex (d3dfvf_xyz | d3dfvf_diffuse)
lresult winapi msgproc(hwnd hwnd, uint msg, wparam wparam, lparam lparam)
return
defwindowproc(hwnd, msg, wparam, lparam);
}int
winapi winmain(hinstance hinst, hinstance prevhinst, lpstr cmdline,
intshow)
;registerclas***(
&wc);
//hwnd hwnd
=100
, 100
, window_width, window_height, getdesktopwindow(),
null, wc.hinstance, null);
//initialize direct3d
if(initialized3d(hwnd,
false
))else
renderscene();}}
//release any and all resources.
shutdown();
//unregister our window.
unregisterclass(window_class, wc.hinstance);
return0;
}bool
initialized3d(hwnd hwnd,
bool
fullscreen)
else
d3***.windowed
=true;
d3***.swapeffect
=d3dswapeffect_discard;
d3***.backbufferformat
=displaymode.format;
//create the d3ddevice
if(failed(g_d3d
->
createdevice(d3dadapter_default, d3ddevtype_hal, hwnd,
d3dcreate_software_vertexprocessing,
&d3***,
&g_d3ddevice)))
//initialize any objects we will be displaying.if(
!initializeobjects())
return
false
;return
true;}
bool
initializeobjects(),,
};//
create the vertex buffer.
if(failed(g_d3ddevice
->
createvertexbuffer(3*
sizeof
(std3dvertex), 0,
d3dfvf_vertex, d3dpool_default,
&g_vertexbuffer, null)))
return
false;//
fill the vertex buffer.
void
*ptr;
if(failed(g_vertexbuffer
->
lock(0,
sizeof
(objdata), (
void**)
&ptr,
0)))
return
false
;memcpy(ptr, objdata,
sizeof
(objdata));
g_vertexbuffer
->
unlock();
return
true;}
void
renderscene()
void
shutdown()
/*在遊戲程式設計中使物體可以在場景中移動,這很重要。下面將介紹改變當前世界矩陣或模型矩陣的方法。
世界矩陣控制物體位置的參考點。開始時,起點位於(0,0)。通過指定要繪製的新幾何圖形集合的新起點,
改動世界矩陣,就可以在3d空間中四處移動。例如,使用如d3dxmatrixtranslation()這樣的函式就可以改變
世界位置。d3dxmatrixtranslation()函式的引數包括建立不同於d3dxmatrix型別的世界矩陣的矩陣、要移動世
界矩陣的x、y和z的值。如果要將新的世界矩陣位置從(0,0,0)設定為(0,0,-5),那麼只要使用程式清單1.23中
的幾行**即可。
d3dxmatrix world;
d3dxmatrixrotationy(&world, 30.0f);
g_d3ddevice->settransform(d3dts_world, &g_world);
*/
5 5 世界的需求
我想現在的世界需要7種人,偉大的思想家,偉大的政治家,偉大的軍事家,偉大的經濟學家,偉大的管理學家,偉大的企業家和偉大的科學家。世界需要偉大的思想家,為人類指明前進的方向,在思想上防止人類出現倒退,互相毀滅的情況發生。人的思想不被正確的思想所佔據,就容易被錯誤的思想所佔據。乙個國家或民族在困境中太久...
8位世界級巨富教子秘笈
大多數白手起家的世界富豪在教育子女的金錢觀 理財觀方面都不吝惜時間與精力 李嘉誠 讓兒子當球童 靠白手打拼起家的李嘉誠很早就開始關注對孩子的培養,據說,在兒子李澤鉅 李澤鍇還只有 歲時,李嘉誠就專設小椅子,讓兩個兒子列席公司董事會。次子李澤鍇的零用錢,都是自己在課餘兼職,通過當雜工 侍應生掙來的。每...
06世界盃8強備忘錄
1 德國 作為06年世界盃的東道主,德國在本屆賽事上的表現極為搶眼.在小組賽中,德國與哥斯大黎加,厄瓜多尔,波蘭分到一組.在首場的揭幕戰中,德國和哥斯大黎加一起奉獻了一場精彩的比賽.德國4 2贏得比賽.進球的是拉姆,克洛斯和弗林斯.在小組賽的第二 熱,德國對陣波蘭.傷停補時替補出場的奧登科爾助攻諾伊...