arBmind / desktop-duplication-cpp

Windows Desktop Duplication Tool for live coding presentations in C++2a
MIT License
62 stars 12 forks source link
directx dxgi livecoding multithreaded tool windows-desktop windows10

Windows Desktop Duplication Tool

This is a nifty tool to host live coding in presentations or online screen grabbers.

Two in One

Since 3.0 we have two modes of operations.

Presenter Mode

You have your IDE and private notes on your main screen. The tool only captures the code portion of this screen and shows it fullscreen on your presentation monitor or projector.

image::/docs/usage-schema.png?raw=true[Usage Schema,583,168]

Personally I use this mode to host C++ usergroup meetings, team meetings and professional C++ trainings.

Capture Area Mode

You select a portion of the screen by moving the Window around. Once you go "Live" (Context Menu or Taskbar Menu) the Window will move into the background and display whatever is displayed on top of it.

Hint: Your mouse cursors will trail if you have no window in front of it.

Personally I use this mode to share part of my screen in Jitsi, Matrix, Big Blue Button, Teams, Zoom or any other conferencing tool.

Note: As soon as you select the window again, the capture will be pause and the contents of the window will be transparent to allow repositioning of the window without flickering.

Features

By top left part of the primary screen is duplicated to a window on the right part of the same screen.

Interactions:

The tool is optimized to be very response and save CPU time.

History

3.x - TBA

3.0-beta - 2023-12-26

2.0 - 2021-01-17

1.0 - 2017-04-16 (Revision Easter Release)

Requirements

Build yourself

The desktop duplicator was build using QtCreator with Qbs and MSVC2019.

The only other thing you need is the DirectX and Windows and WRL headers. All included in the Windows 10 SDK.

If you have issues please ask.

License

Read the LICENSE file!

Contributions

If you have issues or questions feel free to open a ticket.

If you can answer a question in a ticket, help is appreciated.

If you like the tool, leave a star on Github and spread the love.

All usefull pull requests are welcome! If you have an idea and are unsure, please open a ticket for discussions.

Enjoy!

\0