第一步為全局變量
第二步與第三步位于函數(shù)Objects_Init()中,Objects_Init()是渲染資源初始化函數(shù),在此函數(shù)中進(jìn)行要被渲染的物體的資源的初始化 Objects_Init()調(diào)用位置:Direct3D_Init()末尾,即Direct3D初始化完成后。 Direct3D_Init():Direct3D初始化函數(shù),進(jìn)行Direct3D的初始化。 Direct3D_Init()調(diào)用位置:Windows窗口創(chuàng)建后,即函數(shù)CreateWindow()后面
最后一步位于函數(shù)Direct3D_Render()中,Direct3D_Render()是使用Direct3D進(jìn)行渲染的函數(shù),位于該函數(shù)的“【Direct3D渲染五步曲之三】:正式繪制,利用頂點緩存繪制圖形 ”中 Direct3D_Render()調(diào)用位置: 窗口過程函數(shù)WndPRoc()中,接收到消息WM_PAINT后
設(shè)置紋理的尋址方式:
// 根據(jù)鍵盤按鍵的按下,設(shè)置為紋理尋址方式 if (g_pDInput->IsKeyDown(DIK_1)) //鍵盤上1鍵被按下 { // 設(shè)置重復(fù)紋理尋址模式 g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP); g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP); } if (g_pDInput->IsKeyDown(DIK_2)) //鍵盤上2鍵被按下 { // 設(shè)置鏡像紋理尋址模式 g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_MIRROR); g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_MIRROR); } if (g_pDInput->IsKeyDown(DIK_3)) //鍵盤上3鍵被按下 { // 設(shè)置夾取紋理尋址模式 g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP); g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP); } if (g_pDInput->IsKeyDown(DIK_4)) //鍵盤上4鍵被按下 { // 設(shè)置邊框紋理尋址模式 g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER); g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER); }位于函數(shù)Direct3D_Update()中 Direct3D_Update(): 不是即時渲染代碼但是需要即時調(diào)用的,如按鍵后的坐標(biāo)的更改,都放在這里。 Direct3D_Update()調(diào)用位置: WinMain中的消息循環(huán)過程:
//【5】消息循環(huán)過程 MSG msg = { 0 }; //初始化msg while( msg.message != WM_QUIT ) //使用while循環(huán) { if( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) ) //查看應(yīng)用程序消息隊列,有消息時將隊列中的消息派發(fā)出去。 { TranslateMessage( &msg ); //將虛擬鍵消息轉(zhuǎn)換為字符消息 DispatchMessage( &msg ); //該函數(shù)分發(fā)一個消息給窗口程序。 } else { Direct3D_Update(hwnd); //調(diào)用更新函數(shù),進(jìn)行畫面的更新 Direct3D_Render(hwnd); //調(diào)用渲染函數(shù),進(jìn)行畫面的渲染 } }新聞熱點
疑難解答