DirectX 点列表绘制,不能旋转?
//-----------------------------------------
// Desc: 顶点结构
//-----------------------------------------
struct CUSTOMVERTEX
{
FLOAT x, y, z, rhw;
DWORD color;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)
CUSTOMVERTEX vertices[307200];
。。。。
device->SetTransform(D3DTS_WORLD, (D3DMATRIX *) &g_object_matrix);
device->DrawPrimitive( D3DPT_POINTLIST, 0, 480*640 );
并且设置了顶点缓冲区,绘制成功,但是在绘制前设置世界坐标系不起作用,点阵列没有旋转,为什么呢?
[解决办法]
那要看你的g_object_matrix是否是计算后的世界坐标系。
比如要旋转 Y 轴,你可以这样写:
static float y = 0.0f; D3DXMATRIX yRot; D3DXMatrixRotationY(&yRot, y); y += timeDelta*0.5f; if( y >= D3DX_PI * 2.0f ) y = 0.0f; D3DXMATRIX g_object_matrix = yRot; Device->SetTransform(D3DTS_WORLD, &g_object_matrix);
[解决办法]
断点调试,确定在device->SetTransform(D3DTS_WORLD, (D3DMATRIX *) &yRot)这句代码里面,yRot的值在每帧绘制的时候都在改变吗,然后再写句代码看看观察坐标系是不是同时也在发生变化?
另外建议楼主这种问题的帖子发到游戏开发专区去,会有更多的人解答的~
[解决办法]
楼主把 点阵 的显示方式改成 三角形 试试,可能是 点阵 的旋转看不出来效果。
而且,楼主这里 y += 0.01*0.5f; 把数值改大点,这样便于观察。