Renderer identification

Introduction

You can identify whether the software or OpenGL renderer is currently being used by using the IsOpenGL function from ACSUtils.

Things not to do: don't just check GetCVar(“vid_renderer”) – the user may also have gl_nogl set to true. don't just check for vid_renderer and gl_nogl – the user may be playing in ZDoom, which doesn't have the OpenGL renderer. don't just use IsGZDoom and assume that if the engine is GZDoom, the user is playing in OpenGL renderer. don't check the renderer serverside – the server has no renderer. Nonetheless, many badly coded mods do a lot of the above and get incorrect results.

IsOpenGL

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.

This function will return an incorrect value if 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.

How it works

First, IsOpenGL checks if it's running serverside (see above).

Then IsOpenGL calls IsZDoom to check if it's running in ZDoom. Since ZDoom doesn't have an OpenGL renderer, the renderer is assumed to be software in this case.

Then, IsOpenGL checks gl_nogl – a CVar that lets the user to disable the OpenGL renderer in GZDoom and Zandronum. If it's set, the renderer is assumed to be software.

And only then IsOpenGL checks vid_renderer. If its value is not 0, the renderer is assumed to be OpenGL.