1,direct3D編程中rhw值是什么意思有什么用
RHW是D3D里面的一種頂點格式,是一種自帶視圖、投影、世界等變換和光線計算等處理的頂點格式,而且這些處理我們無法用SetTransform等進行的轉換。正常情況下頂點需要進行視圖、投影、世界等變換和光線計算等處理才能顯示,但RHW已經自帶了這些處理,所以RHW無需我們進行這些處理,而且由于未知原因(我也才學Direct3D沒多久)也不能處理。由于以上理由,RHW一般用來學習和測試程序,實際來說不用這個的。
你的directx是什么版本的?新版本的dorectx9c還不太穩(wěn)定,可以考慮使用dx9b,看還有沒有這種問題。 另外,也有可能是顯卡驅動的問題,先卸載顯卡驅動,然后重新啟動,等系統(tǒng)檢測出顯卡以后,再重新安裝驅動程序。 如果問題依然存在,建議你格式化c盤,重裝系
2,靈活頂點格式是啥意思
“靈活頂點格式”是Direct3D在使用三角形來描述物體模型時的一種描述方式。Direct3D應用程序可以用幾種不同的方式定義靈活頂點格式。靈活頂點格式使應用程序只使用它需要的頂點數據,排除那些它不需要的組成成分。這樣,應用程序可以節(jié)省內存空間,減少系統(tǒng)帶寬。通過D3DFVF的組合,可以描述圖元頂點的格式。靈活頂點格式指定的格式包括點的大小,用D3DFVF_PSIZE指定,該大小在投影機空間用來表示未經變換的頂點,在設備空間用來表示經過變換的頂點。擴展資料:定義頂點格式struct CustomerVertexFLOAT x,y,z,rhw;DWORD color; };注: RHW表示投影空間中頂點所在的齊次點(x,y,z,w)(homogeneous point)的w坐標的導數(reciprocal), 注意的是,D3DFVF_XYZRHW和D3DFVF_XYZ、D3DFVF_NORMAL不能共存,因為后兩個標志與前一個矛盾。在使用這種頂點時,系統(tǒng)需要頂點的位置已經經過變換了。在定義完頂點格式以后,就要開辟一塊頂點緩沖區(qū):g_pd3dDevice->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX),0, D3DFVF_CUSTOMVERTEX,D3DPOOL_DEFAULT, &g_pVB, NULL ) 開辟緩沖區(qū)后,就需要對這個緩沖區(qū)進行填寫,那么填寫的數據呢,也需要先指定出來: CUSTOMVERTEX vertices[] =}; 然后將數據寫入緩沖區(qū):VOID* pVertices;if( FAILED( g_pVB->Lock( 0, sizeof(vertices), (void**)&pVertices, 0 ) ) )return E_FAIL;memcpy( pVertices, vertices, sizeof(vertices) );g_pVB->Unlock();這里寫入的過程用的是Lock函數得到的緩沖區(qū)的地址,然后用memcpy函數將自己寫好的數據寫進去。到這里,頂點就算是創(chuàng)建好了。
“靈活頂點格式”是Direct3D在使用三角形來描述物體模型時的一種描述方式。 一個三角形包含三個頂點,為了能夠通過三角形網格描述物體,首先需要定義這些三角形的頂點(Vertex),其中包括定義每個頂點的坐標位置及顏色等其他屬性。 “靈活頂點格式”就是由用戶自定義其中所需要包含的頂點屬性信息,例如可以指定頂點的三維坐標,顏色,頂點法線坐標及紋理坐標等。在創(chuàng)建自定義靈活頂點格式時,根據實際的需要可以定義一個只包含特定頂點信息的結構體。例如,可以定義一個僅包含頂點x,y,z坐標的靈活頂點格式的結構體,也可以定義一個包含有頂點顏色,法線向量,紋理坐標等復雜頂點信息的靈活頂點格式的結構體。需要注意的是,在定義靈活頂點格式時必須按照如下的順序定義頂點的相關屬性: 位置->RHW->混合權重值->頂點法線向量->散射光顏色值->鏡面反射顏色值->紋理坐標信息
通俗的說就是可圓滑的點