Directx 为什么我的三角形拒绝旋转?

Directx 为什么我的三角形拒绝旋转?,directx,direct3d,directx-11,Directx,Direct3d,Directx 11,我在DirectX11中创建了一个三角形。我现在想用视口矩阵和世界矩阵来帮助我理解它们,所以我想简单地绕Z轴旋转三角形。下面是我尝试这样做的代码 void Render(void) { if (d3dContext_ == 0) return; XMMATRIX view = XMMatrixIdentity(); XMMATRIX projection = XMMatrixOrthographicOffCenterLH(0.0f, 800.0f, 0.

我在DirectX11中创建了一个三角形。我现在想用视口矩阵和世界矩阵来帮助我理解它们,所以我想简单地绕Z轴旋转三角形。下面是我尝试这样做的代码

void Render(void)
{
    if (d3dContext_ == 0)
        return;

    XMMATRIX view = XMMatrixIdentity();
    XMMATRIX projection = XMMatrixOrthographicOffCenterLH(0.0f, 800.0f, 0.0f, 600.0f, 0.1f, 100.0f); .
    XMMATRIX vpMatrix_ = XMMatrixMultiply(view, projection);

    XMMATRIX translation = XMMatrixTranslation(0.0f, 0.0f, 0.0f);
    XMMATRIX rotationZ = XMMatrixRotationZ(30.0f);
    XMMATRIX TriangleWorld = translation * rotationZ;

    XMMATRIX mvp = TriangleWorld*vpMatrix_;
    mvp = XMMatrixTranspose(mvp);

    float clearColor[4] = { 0.0f, 0.0f, 0.25f, 1.0f };
    d3dContext_->ClearRenderTargetView(backBufferTarget_, clearColor);
    unsigned int stride = sizeof(VertexPos);
    unsigned int offset = 0;


    d3dContext_->IASetInputLayout(inputLayout_); 
    d3dContext_->IASetVertexBuffers(0, 1, &vertexBuffer_, &stride, &offset); 
    d3dContext_->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); 
    d3dContext_->VSSetShader(solidColorVS_, 0, 0);
    d3dContext_->PSSetShader(solidColorPS_, 0, 0);

    d3dContext_->UpdateSubresource(mvpCB_, 0, 0, &mvp, 0, 0);
    d3dContext_->VSSetConstantBuffers(0, 1, &mvpCB_); 

    d3dContext_->Draw(3, 0); 
    swapChain_->Present(0, 0);
}
它只显示标准三角形,就好像它没有注意到mvp一样。 我想要的效果是由
XMMATRIX rotationZ=XMMatrixRotationZ(30)控制的旋转


谢谢

据我从OpenGl了解,对于动画旋转,必须将XMMatrixRotationZ值每刻度增加一点,否则只能在特定角度绘制一次

因此(如果没有)为渲染函数创建一个循环,并增加每轮的角度值


希望我能帮忙

XMMatrixRotationZ
采用弧度作为参数,而不是度(请参阅)。 要从弧度获得度,必须乘以
M_PI/180.0f

XMMATRIX rotationZ = XMMatrixRotationZ(30 * M_PI / 180.0);

嗨,是的,我想这可能是个问题。但是,我输入的任何值,无论是0.2、2还是20,都不会改变三角形的方向。嗨,我实际上刚从静态旋转三角形的图像开始。我有一个计时器,用于以后逐渐增加,但即使将其设置为静态值“30”,我仍希望三角形位于不同的角度。谢谢你也测试过X&Y轴了吗?同时使用用户1781290Hi的梯度到半径计算,是的,我已经尝试过了。我还尝试过更改xmmatrixtransation(0.0f,0.0f,0.0f)值,但它没有移动一英寸。我认为它已应用,但顺序错误。看看一些很好的例子和解释,可能是在triangel/vpmartix Multiply上,您是否尝试将mvp设置为完全错误的数字,只是为了看看是否使用了它?您的投影矩阵看起来与顶点坐标有可疑的不同?请编辑您的问题,向我们展示HLSL部分,特别是
solidColorVS\uucode>实现。您好,我发现HLSL部分确实存在我的问题。它只是保持顶点的位置不变。我现在正在修复它,一旦我得到它,我会发布一个ans。谢谢