8 世界矩陣使物體移動

2021-09-07 23:18:19 字數 3696 閱讀 7569

#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贏得比賽.進球的是拉姆,克洛斯和弗林斯.在小組賽的第二 熱,德國對陣波蘭.傷停補時替補出場的奧登科爾助攻諾伊...