Я нашел некоторые вещи для рисования любого изображения, используя 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, и я немного путаюсь с этим.Мб кто-нибудь может мне помочь.