【问题标题】:why D3DXCreateCylinder is not creating a cylinder?为什么 D3DXCreateCylinder 不创建圆柱体?
【发布时间】:2011-04-07 23:41:28
【问题描述】:

我正在尝试制作球迹。
rBallPos 正在正确更新。 以下代码无法创建 一个圆柱体作为球的轨迹。如何 解决了吗?

LPD3DXMESH /*ID3DXMesh*/ ppMeshCylinder = NULL;
hr = D3DXCreateCylinder(g_d3d_device,0.1f,0.1f,0.1f,1,1,&ppMeshCylinder,0);

hr 在这里也失败了 hr != D3D_OK

D3DXMATRIX cylinder, cylinder2, cylinderRotate, cylinderTrans;
D3DXMatrixRotationX(&cylinderRotate, 1.5f);
D3DXMatrixTranslation(&cylinderTrans, rBallPos.fX, rBallPos.fY, rBallPos.fZ);
D3DXMatrixMultiply(&cylinder, &cylinderRotate, &cylinderTrans);
g_d3d_device->SetTransform(D3DTS_WORLD, &cylinder);
ppMeshCylinder->DrawSubset(0);

需要帮助。

【问题讨论】:

    标签: c++ directx


    【解决方案1】:

    你需要传入一个指向LPD3DXMESH的指针,所以你的mesh参数应该是&ppMeshCylinder而不是ppMeshCylinder。事实上,你的编译器应该已经警告过你了。

    更新:尝试为SlicesStacks 传递一个更大的值,比如5 或10。不可能创建一个只有1 个多边形的圆柱形网格。

    【讨论】:

    • 很抱歉我的错误在这里.. 它是 &ppMeshCylinder。它有运行时错误。我更新了。
    • 好点..它现在运行没有任何运行时错误并创建网格。现在我无法绘制它(我猜)..因为位置还可以。我现在正在这样做,并且必须在 Render() fn 中进行。我在做什么可能是错的?感谢您指出“切片”和“堆栈”。 ......而且没有。这些的价值在 MS 网站的任何地方都没有解释.. 或者我错过了。用 1 个切片和一个堆栈可以制作一个圆柱体,不是吗(就像在 MAYA 中一样)?
    • 我现在可以画了.. 非常感谢。但是现在我想给它颜色或纹理或材料。只是在努力。任何指针仍然会有所帮助。
    • 只需使用device->SetMaterial 并传入具有所需属性的材料结构。或者使用device->SetTexture 并传入一个纹理(可以使用D3DXCreateTextureFromFile 创建)。
    • 这些应该可以工作,但它不工作,可能是什么原因?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多