From 93b8f68b2e9ddc450ce63f1b6e1806960312d803 Mon Sep 17 00:00:00 2001 From: skallweitNV <64953474+skallweitNV@users.noreply.github.com> Date: Tue, 19 Dec 2023 00:16:14 +0100 Subject: macos/vulkan support (#3418) --- examples/platform-test/main.cpp | 102 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 examples/platform-test/main.cpp (limited to 'examples/platform-test/main.cpp') diff --git a/examples/platform-test/main.cpp b/examples/platform-test/main.cpp new file mode 100644 index 000000000..24673db1c --- /dev/null +++ b/examples/platform-test/main.cpp @@ -0,0 +1,102 @@ +#include +#include "tools/platform/window.h" +#include "examples/example-base/example-base.h" + +using namespace gfx; +using namespace Slang; + +struct PlatformTest : public WindowedAppBase +{ + +void onSizeChanged() +{ + printf("onSizeChanged\n"); +} + +void onFocus() +{ + printf("onFocus\n"); +} + +void onLostFocus() +{ + printf("onLostFocus\n"); +} + +void onKeyDown(platform::KeyEventArgs args) +{ + printf("onKeyDown(key=0x%02x, buttons=0x%02x)\n", args.key, args.buttons); +} + +void onKeyUp(platform::KeyEventArgs args) +{ + printf("okKeyUp(key=0x%02x, buttons=0x%02x)\n", args.key, args.buttons); +} + +void onKeyPress(platform::KeyEventArgs args) +{ + printf("onKeyPress(keyChar=0x%02x)\n", args.keyChar); +} + +void onMouseMove(platform::MouseEventArgs args) +{ + printf("onMouseMove(x=%d, y=%d, delta=%d, buttons=0x%02x\n", args.x, args.y, args.delta, args.buttons); +} + +void onMouseDown(platform::MouseEventArgs args) +{ + printf("onMouseDown(x=%d, y=%d, delta=%d, buttons=0x%02x\n", args.x, args.y, args.delta, args.buttons); +} + +void onMouseUp(platform::MouseEventArgs args) +{ + printf("onMouseUp(x=%d, y=%d, delta=%d, buttons=0x%02x\n", args.x, args.y, args.delta, args.buttons); +} + +void onMouseWheel(platform::MouseEventArgs args) +{ + printf("onMouseWheel(x=%d, y=%d, delta=%d, buttons=0x%02x\n", args.x, args.y, args.delta, args.buttons); +} + +Slang::Result initialize() +{ + initializeBase("platform-test", 1024, 768); + + gWindow->events.sizeChanged = [this]() { onSizeChanged(); }; + gWindow->events.focus = [this]() { onFocus(); }; + gWindow->events.lostFocus = [this]() { onLostFocus(); }; + gWindow->events.keyDown = [this](const platform::KeyEventArgs& e) { onKeyDown(e); }; + gWindow->events.keyUp = [this](const platform::KeyEventArgs& e) { onKeyUp(e); }; + gWindow->events.keyPress = [this](const platform::KeyEventArgs& e) { onKeyPress(e); }; + gWindow->events.mouseMove = [this](const platform::MouseEventArgs& e) { onMouseMove(e); }; + gWindow->events.mouseDown = [this](const platform::MouseEventArgs& e) { onMouseDown(e); }; + gWindow->events.mouseUp = [this](const platform::MouseEventArgs& e) { onMouseUp(e); }; + gWindow->events.mouseWheel = [this](const platform::MouseEventArgs& e) { onMouseWheel(e); }; + + return SLANG_OK; +} + +virtual void renderFrame(int frameBufferIndex) override +{ + ComPtr commandBuffer = gTransientHeaps[frameBufferIndex]->createCommandBuffer(); + + auto renderEncoder = commandBuffer->encodeRenderCommands(gRenderPass, gFramebuffers[frameBufferIndex]); + + gfx::Viewport viewport = {}; + viewport.maxZ = 1.0f; + viewport.extentX = (float)windowWidth; + viewport.extentY = (float)windowHeight; + renderEncoder->setViewportAndScissor(viewport); + + renderEncoder->endEncoding(); + commandBuffer->close(); + gQueue->executeCommandBuffer(commandBuffer); + + gSwapchain->present(); +} + +}; + +// This macro instantiates an appropriate main function to +// run the application defined above. +PLATFORM_UI_MAIN(innerMain) -- cgit v1.2.3