Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

AppGameKit Studio Chat / #renderer "None"

Years of Service
User Offline
Joined: 7th Jun 2017
Posted: 1st Dec 2019 11:14
Quote: "Added #renderer "None" to create a windowless app (Windows only), graphics commands will not work but Swap must be called every frame and it will use the SetSyncRate value to limit the frame rate"

What does None means here? I would guess that something would have to render stuff. In any case, it doesn't seem to work.

And where do I find those # commands in the help?
Years of Service
User Offline
Joined: 3rd Jul 2016
Location: Laniakea Supercluster
Posted: 1st Dec 2019 11:22 Edited at: 1st Dec 2019 12:44
Quote: "to create a windowless app (Windows only), graphics commands will not work"

There's nothing to render I guess

This is the only render command reference I found so far:

Coders don't die, they just gosub without return
Years of Service
User Offline
Joined: 3rd Dec 2008
Location: The Netherlands
Posted: 1st Dec 2019 21:07
I've ran a test with a function showing a "message()". The main window is not rendered at all as well as not being present on the taskbar or within the taskmanager. It is completely hidden. The messages during my tests did show something was running. Hackers will love that feature! Lol.
Regards Sph!nx
Years of Service
User Offline
Joined: 9th Oct 2002
Posted: 1st Dec 2019 21:23 Edited at: 2nd Dec 2019 20:05
It will generally be listed under 'Background processes' in the task manager, rather than as an app. Or if you compile and launch from the IDE, it will be chained to a linked task under the IDE's app listing. So it seems to be a potential way to develop a headless server program. I'm trying to struggle through it myself as it seems some operations/commands may not be getting executed during runtime while in this mode, so my efforts to get my (non-graphical version) server program haven't yet panned out successfully and I haven't been able to determine why yet (maybe due in no small part to a lack of error reporting). I've tried using just 'Swap()' with each loop as directed in the release notes as well as full 'Sync()', but it doesn't seem to work with either for some unknown reason at this point.

A '#renderer "Software"' mode that also removes any GPU requirement would be helpful to test a non-graphical mode with just text to try and troubleshoot this type of operation. As things are, I have no idea why the program is actively running and using CPU resources, but does not properly handle a multiplayer session using the exact same code as the GPU enabled version. Could be an inability to read/write from/to files, certain network commands, or something else. I just don't seem to have any way of determining a cause.

Edit: As is often the case, the problem with the headless mode not working properly for my multiplayer server program was user error (namely me One misaligned check for an object status resulted in a bypass of the connection directive to start the session. Once that was sorted, the headless mode worked well.
Years of Service
User Offline
Joined: 23rd Mar 2005
Location: Hertfordshire, England
Posted: 4th Dec 2019 15:46
#renderer None... does exactly what it says on the tin., it doesn't load the Rendering Engine (be that OpenGL or Vulkan)
This is primarily for Applications that you don't need Graphics for, instead you just want them to run in the Terminal or such... say like a Dedicated Server Runtime.

Honestly I don't see this being a particularly useful Feature (given it's currently limited to Windows only) and AppGameKit Tier 1 doesn't exactly have great Console Features at present.
Hence why it says to use Swap instead of Sync... as Swap (unlike the name suggests) just updates the Core AppGameKit Logic., if the Renderer is running it will also perform a Backbuffer Flip but that's Conditional on a Completed "Render()" Call... if you never call Render() then the Buffer Doesn't get Flipped as the Data should remain the same; and I'd wager if it's blank then it's essentially calling a NULL Pointer.

It could be useful in Tier 2 Console Apps., but yeah... don't see many use cases for Tier 1.

Login to post a reply

Server time is: 2024-04-13 16:46:45
Your offset time is: 2024-04-13 16:46:45