void App::RenderText(const std::wstring& text, Float2 pos) { ID3D11DeviceContext* context = deviceManager.ImmediateContext(); // Set the backbuffer and viewport ID3D11RenderTargetView* rtvs[1] = { deviceManager.BackBuffer() }; context->OMSetRenderTargets(1, rtvs, NULL); float clearColor[4] = { 0.0f, 0.0f, 0.0f, 0.0f }; context->ClearRenderTargetView(rtvs[0], clearColor); SetViewport(context, deviceManager.BackBufferWidth(), deviceManager.BackBufferHeight()); // Draw the text Float4x4 transform; transform.SetTranslation(Float3(pos.x, pos.y,0.0f)); spriteRenderer.Begin(context, SpriteRenderer::Point); spriteRenderer.RenderText(font, text.c_str(), transform.ToSIMD()); spriteRenderer.End(); // Present deviceManager.SwapChain()->Present(0, 0); // Pump the message loop window.MessageLoop(); }
Float4x4 Float4x4::Invert(const Float4x4& m) { XMVECTOR det; return XMMatrixInverse(&det, m.ToSIMD()); }
Float4x4 Float4x4::Transpose(const Float4x4& m) { return XMMatrixTranspose(m.ToSIMD()); }
Float4x4 Float4x4::operator*(const Float4x4& other) const { XMMATRIX result = this->ToSIMD() * other.ToSIMD(); return Float4x4(result); }
Float3 Float3::TransformDirection(const Float3&v, const Float4x4& m) { XMVECTOR vec = v.ToSIMD(); vec = XMVector3TransformNormal(vec, m.ToSIMD()); return Float3(vec); }
Float3 Float3::Transform(const Float3& v, const Float4x4& m) { XMVECTOR vec = v.ToSIMD(); vec = XMVector3TransformCoord(vec, m.ToSIMD()); return Float3(vec); }