You can detect whether the client is currently using the software renderer or the OpenGL renderer by calling the
IsOpenGL function provided by ACSUtils.
GetCVar(“vid_renderer”)– the user may also have
gl_noglset to true.
gl_nogl– the user may be playing in ZDoom, which doesn't have the OpenGL renderer.
Nonetheless, many badly coded mods do a lot of the above and get incorrect results.
bool IsOpenGL() – returns true if the mod is being played in the OpenGL renederer, false if in software renderer.
If called serverside,
IsOpenGL logs an error and returns true, because the server can't identify a client's renderer remotely. The renderer is assumed to be OpenGL when called serverside because the OpenGL renderer has less restrictions.
gl_noglis changed mid-game because the renderer only actually switches after restart, but the values of the cvars change immediately.
This functions first calls IsClient to see if it's running on a client (see above).
If it's running on a client, it calls IsGZDoom to check if the port is GZDoom or a derivative like Zandronum. If the port is not a GZDoom derivative, it can't have the OpenGL renderer, and this function returns false. This is to prevent detecting the OpenGL renderer when ZDoom is run with a config from GZDoom which has
If the port is confirmed to be a GZDoom derivative, this function checks for two CVars:
gl_nogl. This function only returns true if
vid_renderer is true and
gl_nogl is false.