I’m curious if you’re still planning to update for GMS 2
Brings back synchronous drawing into GameMaker: Studio. · By
No idea, to be honest - 2.3 did finally add DXGI swapchain to os_get_info, but doing ->Present doesn't update the imagery on screen and I have not found time to dig into the possible reasoning yet.
If you'd like to peck at it, here's C++ code
#include "stdafx.h" #include <stdio.h> #include <d3d11.h> #define dllx extern "C" __declspec(dllexport) #define trace(...) { printf(__VA_ARGS__); printf("\n"); fflush(stdout); } dllx double screen_refresh_w_raw(IDXGISwapChain* swapchain) { if (!swapchain) return false; auto hr = swapchain->Present(0, 0); if (hr != S_OK) { trace("Coudln't present, code %x", hr); return false; } else return true; }
And GML
#define screen_refresh_w /// (): gml_pragma("global", @' global.__video_d3d11_swapchain = undefined; global.__video_d3d11_swapchain_rdy = false; '); draw_flush(); //surface_getpixel(application_surface, 0, 0); var _swc; if (!global.__video_d3d11_swapchain_rdy) { global.__video_d3d11_swapchain_rdy = true; var _inf = os_get_info(); _swc = _inf[?"video_d3d11_swapchain"]; //show_debug_message(_swc); global.__video_d3d11_swapchain = _swc; } else _swc = global.__video_d3d11_swapchain; return screen_refresh_w_raw(_swc);
The DLL function is to be set up in the extension with a "string" (pointer) argument to receive the address correctly.