DX Поворот 2D изображения - PullRequest
       8

DX Поворот 2D изображения

0 голосов
/ 11 февраля 2019

Я нашел некоторые вещи для рисования любого изображения, используя DX11, поэтому мне нужно повернуть это изображение вокруг центра этого изображения, но моя математика плоха:).

    void UpdateBuffers(int positionX, int positionY)
{
    if((positionX == m_previousPosX) && (positionY == m_previousPosY))
        return;

    m_previousPosX = positionX;
    m_previousPosY = positionY;

    float left = (float)((m_screenWidth / 2) * -1) + (float)positionX;
    float right = left + (float)m_bitmapWidth;
    float top = (float)(m_screenHeight / 2) - (float)positionY;
    float bottom = top - (float)m_bitmapHeight;

    D3D11_MAPPED_SUBRESOURCE mappedResource;
    HRESULT result = m_render->m_pImmediateContext->Map(m_vertexBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
    if(FAILED(result))
        return;

    Vertex *verticesPtr = (Vertex*)mappedResource.pData;

    verticesPtr[0].pos = XMFLOAT3(left, top, 0.0f);
    verticesPtr[0].tex = XMFLOAT2(0.0f, 0.0f);

    verticesPtr[1].pos = XMFLOAT3(right, bottom, 0.0f);
    verticesPtr[1].tex = XMFLOAT2(1.0f, 1.0f);

    verticesPtr[2].pos = XMFLOAT3(left, bottom, 0.0f);
    verticesPtr[2].tex = XMFLOAT2(0.0f, 1.0f);

    verticesPtr[3].pos = XMFLOAT3(left, top, 0.0f);
    verticesPtr[3].tex = XMFLOAT2(0.0f, 0.0f);

    verticesPtr[4].pos = XMFLOAT3(right, top, 0.0f);
    verticesPtr[4].tex = XMFLOAT2(1.0f, 0.0f);

    verticesPtr[5].pos = XMFLOAT3(right, bottom, 0.0f);
    verticesPtr[5].tex = XMFLOAT2(1.0f, 1.0f);

    m_render->m_pImmediateContext->Unmap(m_vertexBuffer, 0);
}

Как я понимаю, мне нужно 4 балладля этого, но структура точек должна содержать оси x и y, и у этой функции есть только x, y, w, h, и я немного путаюсь с этим.Мб кто-нибудь может мне помочь.

...