void ImageEffectsTest::Draw() { auto presentationParameters = graphicsDevice->GetPresentationParameters(); Viewport viewport = {0, 0, presentationParameters.BackBufferWidth, presentationParameters.BackBufferHeight}; RenderPass pass; pass.RenderTargets.emplace_back(renderTarget, Color::CornflowerBlue.ToVector4()); pass.ClearDepth = 1.0f; pass.ClearStencil = 0; pass.Viewport = viewport; pass.ScissorRect = viewport.GetBounds(); commandList->Reset(); commandList->SetRenderPass(std::move(pass)); commandList->Close(); auto projectionMatrix = Matrix4x4::CreateOrthographicLH( static_cast<float>(presentationParameters.BackBufferWidth), static_cast<float>(presentationParameters.BackBufferHeight), 0.0f, 100.0f); primitiveBatch->Begin(commandList, projectionMatrix); // Drawing line const auto w = static_cast<float>(presentationParameters.BackBufferWidth); const auto h = static_cast<float>(presentationParameters.BackBufferHeight); primitiveBatch->DrawLine(Vector2{-w * 0.5f, 0.0f}, Vector2{w * 0.5f, 0.0f}, Color{221, 220, 218, 160}, 1.0f); primitiveBatch->DrawLine(Vector2{0.0f, -h * 0.5f}, Vector2{0.0f, h * 0.5f}, Color{221, 220, 218, 160}, 1.0f); primitiveBatch->DrawLine(Vector2{-w * 0.5f, h * 0.25f}, Vector2{w * 0.5f, h * 0.25f}, Color{221, 220, 218, 60}, 1.0f); primitiveBatch->DrawLine(Vector2{-w * 0.5f, -h * 0.25f}, Vector2{w * 0.5f, -h * 0.25f}, Color{221, 220, 218, 60}, 1.0f); primitiveBatch->DrawLine(Vector2{-w * 0.25f, -h * 0.5f}, Vector2{-w * 0.25f, h * 0.5f}, Color{221, 220, 218, 60}, 1.0f); primitiveBatch->DrawLine(Vector2{w * 0.25f, -h * 0.5f}, Vector2{w * 0.25f, h * 0.5f}, Color{221, 220, 218, 60}, 1.0f); // Drawing rectangle primitiveBatch->DrawRectangle(Vector2::Zero, 100, 40, Vector2{1.0f, 1.0f}, Color::White); primitiveBatch->DrawRectangle(Vector2::Zero, 40, 100, Vector2{0.0f, 0.0f}, Color::Black); primitiveBatch->DrawRectangle(Vector2::Zero, 30, 30, Vector2{0.5f, 0.5f}, Color::Green); // Drawing triangle primitiveBatch->DrawTriangle( Vector2{0.0f, -40.0f}, Vector2{40.0f, 0.0f}, Vector2{40.0f, -40.0f}, Color::Black, Color::Green, Color::Red); primitiveBatch->End(); postProcessCompositor.Draw(*commandList, renderTarget); constexpr bool isStandalone = false; if constexpr (isStandalone) { commandQueue->Reset(); commandQueue->PushbackCommandList(commandList); commandQueue->ExecuteCommandLists(); commandQueue->Present(); }
void LineBatchTest::Draw() { auto presentationParameters = graphicsDevice->GetPresentationParameters(); Viewport viewport = {0, 0, presentationParameters.BackBufferWidth, presentationParameters.BackBufferHeight}; RenderPass pass; pass.RenderTargets.emplace_back(nullptr, Color::CornflowerBlue.ToVector4()); pass.ClearDepth = 1.0f; pass.ClearStencil = 0; pass.Viewport = viewport; pass.ScissorRect = viewport.GetBounds(); commandList->Reset(); commandList->SetRenderPass(std::move(pass)); { auto world = Matrix4x4::CreateScale(0.1f) * Matrix4x4::CreateRotationX(Math::PiOver4<float>) * Matrix4x4::CreateRotationY(std::sin( Math::TwoPi<float> * static_cast<float>(timer->GetTotalTime().count()))); auto view = Matrix4x4::CreateTranslation(Vector3{0.0f, 0.0f, 50.0f}); auto projectionMatrix = Matrix4x4::CreatePerspectiveFieldOfViewLH( Math::PiOver4<float>, static_cast<float>(presentationParameters.BackBufferWidth) / static_cast<float>(presentationParameters.BackBufferHeight), 0.0001f, 500.0f); lineBatch2->Begin(commandList, world * view * projectionMatrix); lineBatch2->DrawSphere(Vector3::Zero, 100.0f, Color::Blue, 16); lineBatch2->End(); } auto projectionMatrix = Matrix4x4::CreateOrthographicLH( static_cast<float>(presentationParameters.BackBufferWidth), static_cast<float>(presentationParameters.BackBufferHeight), 0.0f, 100.0f); lineBatch->Begin(commandList, projectionMatrix); for (size_t i = 1; i < path.size(); i++) { auto start = path[i - 1]; auto end = path[i]; lineBatch->DrawLine(start, end, Color{255, 255, 255, 160}); } lineBatch->End(); commandList->Close(); constexpr bool isStandalone = false; if constexpr (isStandalone) { commandQueue->Reset(); commandQueue->PushbackCommandList(commandList); commandQueue->ExecuteCommandLists(); commandQueue->Present(); }
void PrimitiveBatchTest::Draw() { auto presentationParameters = graphicsDevice->GetPresentationParameters(); Viewport viewport = {0, 0, presentationParameters.BackBufferWidth, presentationParameters.BackBufferHeight}; RenderPass pass; pass.RenderTargets.emplace_back(nullptr, Color::CornflowerBlue.ToVector4()); pass.ClearDepth = 1.0f; pass.ClearStencil = 0; pass.Viewport = viewport; pass.ScissorRect = viewport.GetBounds(); commandList->Reset(); commandList->SetRenderPass(std::move(pass)); auto projectionMatrix = Matrix4x4::CreateOrthographicLH( presentationParameters.BackBufferWidth, presentationParameters.BackBufferHeight, 0.0f, 100.0f); const auto w = static_cast<float>(presentationParameters.BackBufferWidth); const auto h = static_cast<float>(presentationParameters.BackBufferHeight); const auto t = static_cast<float>(timer->GetTotalTime().count()); primitiveBatch->Begin(commandList, projectionMatrix); // Drawing line primitiveBatch->DrawLine(Vector2{-w * 0.5f, 0.0f}, Vector2{w * 0.5f, 0.0f}, Color{221, 220, 218, 160}, 1.0f); primitiveBatch->DrawLine(Vector2{0.0f, -h * 0.5f}, Vector2{0.0f, h * 0.5f}, Color{221, 220, 218, 160}, 1.0f); primitiveBatch->DrawLine(Vector2{-w * 0.5f, h * 0.25f}, Vector2{w * 0.5f, h * 0.25f}, Color{221, 220, 218, 60}, 1.0f); primitiveBatch->DrawLine(Vector2{-w * 0.5f, -h * 0.25f}, Vector2{w * 0.5f, -h * 0.25f}, Color{221, 220, 218, 60}, 1.0f); primitiveBatch->DrawLine(Vector2{-w * 0.25f, -h * 0.5f}, Vector2{-w * 0.25f, h * 0.5f}, Color{221, 220, 218, 60}, 1.0f); primitiveBatch->DrawLine(Vector2{w * 0.25f, -h * 0.5f}, Vector2{w * 0.25f, h * 0.5f}, Color{221, 220, 218, 60}, 1.0f); // Drawing rectangle primitiveBatch->DrawRectangle(Vector2::Zero, 100, 40, Vector2{1.0f, 1.0f}, Color::White); primitiveBatch->DrawRectangle(Vector2::Zero, 40, 100, Vector2{0.0f, 0.0f}, Color::Black); primitiveBatch->DrawRectangle(Vector2::Zero, 30, 30, Vector2{0.5f, 0.5f}, Color::Green); // Drawing arc primitiveBatch->DrawArc( Vector2{0.0f, 100.0f}, 40.0f, MathHelper::ToRadians(0.0f), MathHelper::ToRadians(270.0f * Easings::EaseSine::InOut(t)), 80, Color::Yellow); // Drawing triangle primitiveBatch->DrawTriangle( Vector2{0.0f, -40.0f}, Vector2{40.0f, 0.0f}, Vector2{40.0f, -40.0f}, Color::Black, Color::Green, Color::Red); primitiveBatch->End(); commandList->Close(); constexpr bool isStandalone = false; if constexpr (isStandalone) { commandQueue->Reset(); commandQueue->PushbackCommandList(commandList); commandQueue->ExecuteCommandLists(); commandQueue->Present(); }