菜鳥DirectX之頂點快取

2021-06-26 07:09:12 字數 1519 閱讀 3197

現在是22點43分,剛下班回家,因為遊戲要十二月份上線,比之前的計畫提前了三個月,拼命的加班啊。。

一什麼是頂點快取

在遊戲中,物體模型是用多邊形網格來描述的,一般的是三角形,頂點快取就是來儲存用來描述物體模型的所有多面形的頂點的資訊,這些資訊有頂點的三維座標,頂點顏色,頂點法向量,紋理座標等。

二如何使用頂點快取

使用頂點快取分為四步

1設計頂點快取

就是用來說明你的頂點中有哪些資訊

比如: 

struct myvertex

然後用乙個巨集來描述頂點所包含的資訊,以便隨後設定到環境中

#deifne d3dfvf_myvertex  (d3dfvf_xyzrhw|d3dfvf_diffuse)

2建立頂點快取

函式 createvertexbuffer

比如:lpdirect3dvertexbuffer9g_pvertexbuffer = null;

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

0, d3dfvf_customvertex,

d3dpool_default, &g_pvertexbuffer, null ) ) )

3 訪問頂點快取

函式 訪問之前需要先把頂點快取的記憶體鎖住,然後讀寫資料,然後解鎖,直接貼出**

//頂點資料,

customvertex vertices =,, 

,};//填充頂點緩衝區

void* pvertices;

if( failed( g_pvertexbuffer->lock( 0, sizeof(vertices), (void**)&pvertices, 0 ) ) )

return e_fail;

memcpy( pvertices, vertices, sizeof(vertices) );

g_pvertexbuffer->unlock();

4 繪製圖形

這裡就是繪製三角形

這裡要分三小步

(1)設定資料來源 

函式 setstreamsource

(2)設定定點格式

函式 setfvf

(3)繪製圖形

函式 draworimitive

貼**

g_pd3ddevice->setrenderstate(d3drs_shademode,d3dshade_gouraud);//設定渲染狀態

g_pd3ddevice->setstreamsource( 0, g_pvertexbuffer, 0, sizeof(customvertex) );

g_pd3ddevice->setfvf( d3dfvf_customvertex );

g_pd3ddevice->drawprimitive( d3dpt_********list, 0, 2 );

菜鳥DirectX之紋理對映

一紋理對映是什麼 就是你用前面部落格中講到的方法繪製乙個正方形後,在正方形上貼一張你想要顯示的 二紋理對映的使用 使用方法分為四步 1 在頂點格式中定義紋理的座標 比如 struct myvertex 2 填充頂點資料 customvertex vertices void pvertices if ...

菜鳥DirectX之Direct顯示文字

幾乎所有的程式語言的第一步都是輸出乙個 hello world 吧,再悶輸出個中文版的 你好,世界 directx中顯示文字有兩部 一 建立字型,就是你想用 宋體 還是 黑體 之類的 函式 d3dxcreatefont 二繪製出文字 函式 drawtext 三顯示文字 函式 present 熟悉gd...

菜鳥DirectX之光照與材質

光照 一 先介紹一下光照的型別吧 1 環境光 特點 稱它為背景光更合適,只有乙個顏色亮度,不會衰減。2 漫反射 特點 沿著特定的方向傳播,碰到障礙物時沿著各個方向反射,和觀察者的位置無關 3 鏡面反射 特點 當光線碰到障礙物時將嚴格的沿著另一方向反射 4 自發光 特點 物體自身發的光 不參與光照的計...