summaryrefslogtreecommitdiffstats
path: root/examples/platform-test/main.cpp
diff options
context:
space:
mode:
authorskallweitNV <64953474+skallweitNV@users.noreply.github.com>2023-12-19 00:16:14 +0100
committerGitHub <noreply@github.com>2023-12-18 15:16:14 -0800
commit93b8f68b2e9ddc450ce63f1b6e1806960312d803 (patch)
treed5c9c38efe1e7c86637c4be6157595b44a5c4856 /examples/platform-test/main.cpp
parentb6da04424aff71ddba9629c94401a9a897b152a0 (diff)
macos/vulkan support (#3418)
Diffstat (limited to 'examples/platform-test/main.cpp')
-rw-r--r--examples/platform-test/main.cpp102
1 files changed, 102 insertions, 0 deletions
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 <slang.h>
+#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<ICommandBuffer> 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<PlatformTest>)