ACSUtils Wiki

An ACS library for ZDoom-based ports

User Tools

Site Tools


renderer_identification

This is an old revision of the document!


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.

The renderer can change mid-game. Don't store the result of IsOpenGL in a variable. Instead, simply call it every time.

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 for 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 for vid_renderer. If its value is not 0, the renderer is assumed to be OpenGL.

renderer_identification.1566780176.txt.gz · Last modified: 2019/08/26 03:42 by korshun