|
|

楼主 |
发表于 2006-1-3 17:07:00
|
显示全部楼层
Re:菜鸟请教:从mesh中分离出顶点坐标等信息
Set PtsMesh = DiamondMesh.CloneMeshFVF(D3DXMESH_POINTS, D3DFVF_XYZ, D3DDevice)
g_NumOfVertex = PtsMesh.GetNumVertices
ReDim iBufferOfVertex(0 To g_NumOfVertex - 1)
Set iBuffer = D3DDevice.CreateVertexBuffer _
(g_NumOfVertex * Len(iBufferOfVertex(0)), _
D3DUSAGE_POINTS, FVF_VERTEX, D3DPOOL_DEFAULT)
Set iBuffer = PtsMesh.GetVertexBuffer
PtsMesh.LockVertexBuffer D3DLOCK_NO_DIRTY_UPDATE
iBuffer.GetPrivateData ??, iBufferOfVertex(0), g_NumOfVertex * Len(iBufferOfVertex(0))
PtsMesh.UnlockVertexBuffer
上面是菜鸟我用VB写的代码主要部分,其中DiamondMesh是已成功加载的X文件,iBufferOfVertex是将要获得的点数组,只关心XYZ坐标,这样写对吗?
使用GetVertexBuffer得到顶点缓冲区后,怎么将顶点数据取出来,是GetPrivateData 吗?第一个参数 [DXGUID] 怎么获取??
5555.....
其中,iBufferOfVertex结构如下定义
Private Type VERTEX
P As D3DVECTOR
N As D3DVECTOR
T As D3DVECTOR2
End Type
Const FVF_VERTEX = (D3DFVF_XYZ Or D3DFVF_NORMAL Or D3DFVF_TEX1)
|
|