如何在DirectX9中旋转单个对象?我知道如何旋转所有对象:
static D3DXMATRIX rotation_matrix;
static float X = XX; X += 0.01f;
D3DXMatrixRotationX(&rotation_matrix, X);
d3ddev->SetTransform(D3DTS_WORLD,
&rotation_matrix);
这就是我如何旋转所有物体,对吗?但是如何旋转一个物体呢?谢谢。
答案 0 :(得分:1)
需要知道,您不对对象应用转换。 DirectX甚至不知道“对象”是什么。您始终将变换应用于顶点位置。
通过调用SetTransform()
使用DirectX 9的固定功能管道,可以将转换应用于下次绘制调用中绘制的所有顶点。因此,要将其他变换应用于其他顶点,您需要单独的绘制调用(伪代码):
device->SetStreamSource(vertexBuffer1,...); // "object1"
device->SetTransform(transform1);
device->Draw(...); // draw object1
device->SetStreamSource(vertexBuffer2,...); // "object2"
device->SetTransform(transform2); // rotation2
device->Draw(..); // draw object2
注意,whis将按比例增加绘制调用的数量,并对其变换进行编号。划线电话费用昂贵。对于优化的解决方案,请寻找着色器。
希望它有所帮助。 快乐的编码!