D3D基本三角形面的繪製

2021-05-09 12:11:34 字數 2897 閱讀 9635

#include "../../gameengine/gameengine_common.h"

#include "********.h"

c********::c********(){}

c********::~c********()

direct3drelease();

bool c********::created3ddevice(hwnd hwnd,bool bfullscreen)

//建立idirect3d9物件

m_pidirect3d=direct3dcreate9(d3d_sdk_version); 

if(m_pidirect3d==null)

return false;

d3dcaps9 d3dcaps;

m_pidirect3d->getdevicecaps(d3dadapter_default,d3ddevtype_hal,&d3dcaps);

bool bharwareprocess;

if(d3dcaps.devcaps & d3ddevcaps_hwtransformandlight)

bharwareprocess=true;

else, 

,    

byte* pvertexdata;

//建立頂點緩衝區

if(failed(m_pidirect3ddevice->createvertexbuffer(3 * sizeof(customvertex),0, 

customvertex_fvf, d3dpool_managed, &m_pvertexbuffer,null)))

//引數fvf(flexible vertex format)提供自定義的頂點的格式說明,以便解讀頂點的資料。

return false;

//取得頂點緩衝區的指標

if(failed(m_pvertexbuffer->lock(0, 0, (void**)&pvertexdata, 0)))

return false;

//寫入頂點資料到頂點緩衝區

memcpy(pvertexdata, customvertex, sizeof(customvertex));

//解鎖

m_pvertexbuffer->unlock();

return true;

void c********::render()

if(m_pidirect3ddevice==null)

return;

//清空繪圖表面的backbuffer為黑色

m_pidirect3ddevice->clear(0, null, d3dclear_target, d3dcolor_xrgb(0, 0, 0), 1.0f, 0);

//開始渲染

m_pidirect3ddevice->beginscene();

//渲染三角形面

m_pidirect3ddevice->setstreamsource(0, m_pvertexbuffer, 0, sizeof(customvertex));

m_pidirect3ddevice->setfvf(customvertex_fvf);

m_pidirect3ddevice->drawprimitive(d3dpt_********list, 0, 1);

//結束渲染

m_pidirect3ddevice->endscene();

//置換前後繪圖表面緩衝區,顯示當前幀

m_pidirect3ddevice->present(null, null, null, null);

void c********::direct3drelease()

saferelease(m_pvertexbuffer);

saferelease(m_pidirect3ddevice);

saferelease(m_pidirect3d);

#ifndef ********_include

#define ********_include

#define customvertex_fvf (d3dfvf_xyzrhw|d3dfvf_diffuse)

struct customvertex ;

class c******** ;

#endif

#include "../../gameengine/gameengine_common.h"

#include "../../gameengine/gameengine_input/gameengine_input.h"

#include "********.h"

int apientry winmain(hinstance hinstance,       //傳入的視窗控制代碼

hinstance hprevinstance,   //已存在的視窗控制代碼

lpstr     lpcmdline,        //傳入的命令列引數

int       ncmdshow)         //設定視窗的顯示方式

if(!gameengine_input.createinput(hinstance,hwnd))

setwindowpos(hwnd,0,0,0,0,0,swp_nosize);  //設定應用程式視窗位置

setcursorpos(0,0);   //設定滑鼠初始位置

if(!********.created3ddevice(hwnd,false))

if(!********.initvertexbuffer())

while(msg.message!=wm_quit)

else

} }

//登出視窗類

unregisterclass(wndclassname, hinstance);

return true; }

D 空心三角形

把乙個字元三角形掏空,就能節省材料成本,減輕重量,但關鍵是為了追求另一種視覺效果。在設計的過程中,需要給出各種花紋的材料和大小尺寸的三角形樣板,通過電腦臨時做出來,以便看看效果。input 每行包含乙個字元和乙個整數n 0a 7 sample output x aa a a a a a a a a ...

d3d實現乙個旋轉的三角形

include d3d9.h include d3dx9math.h pragma comment lib,d3d9.lib pragma comment lib,d3dx9.lib pragma comment lib,winmm.lib lpdirect3d9 g pd3d null direc...

問題 D 萊布尼茨三角形

請小夥伴們對自己ac的題目進行標記,注意每人只能標記一次!不知道的不要標記,惡意標記者將 賬號!時間限制 1 sec 記憶體限制 128 mb 提交 狀態 題目描述 世界上著名的萊布尼茨三角形如圖所示,請程式設計輸出圖中排在第n行從左邊數第m個位置上的數。輸入 共一行,有二個整數n 和m n 15 ...