首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

DirectX 点列表绘制,不能旋转?解决办法

2012-06-04 
DirectX 点列表绘制,不能旋转?//-----------------------------------------// Desc: 顶点结构//---------

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 轴,你可以这样写:

C/C++ code
        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; 把数值改大点,这样便于观察。

热点排行