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_nogl
set to true.vid_renderer
and 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.
vid_renderer
or gl_nogl
is 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 vid_renderer=1
.
If the port is confirmed to be a GZDoom derivative, this function checks for two CVars: vid_renderer
and gl_nogl
. This function only returns true if vid_renderer
is true and gl_nogl
is false.