Add the renderer process
The renderer becomes two programs: the adapter (t5deRenderEngine.dll, 32-bit, in IMVU's process) and a 64-bit renderer process (t5de-renderer.exe) drawing with Diligent Engine, fetched with FetchContent and pinned. For now a spike: the adapter starts the renderer process for each engine and signals each frame through a shared memory channel, and the renderer process draws a box into a child window in the client's 3D view. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
0d126574bf
commit
9a7d7d2908
18 files changed
+491
-57
No files matched your search
@@ -5,6 +5,8 @@
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
|
||||
struct HWND__; // windows.h's window handle type (HWND is HWND__*)
|
||||
|
||||
namespace t5de::imvu {
|
||||
|
||||
template <class T>
|
||||
@@ -94,6 +96,18 @@ struct PointSpriteVector;
|
||||
// Region lists IMVU passes to texture updates; unknown so far.
|
||||
class CompoundRegion;
|
||||
|
||||
class INativeWindow;
|
||||
struct UiEvent;
|
||||
using NativeWindowHandle = ::HWND__*; // an HWND
|
||||
|
||||
// IMVU's window (SceneWindow.dll's NativeWindow), as far as a renderer needs it: the first methods of its vtable.
|
||||
// Its later methods include overloads, which MSVC lays out unlike their declaration: declare them from the vtable
|
||||
// if they're ever needed.
|
||||
class INativeWindow {
|
||||
public:
|
||||
virtual ~INativeWindow() = default;
|
||||
virtual void handleMessage(UiEvent* event) = 0;
|
||||
virtual int onSetCursor(Vec2i position) = 0;
|
||||
virtual NativeWindowHandle getPlatformWindow() = 0;
|
||||
};
|
||||
|
||||
} // namespace t5de::imvu
|
||||
Reference in new issue
Block a user