Both sides previous revisionPrevious revisionNext revision | Previous revision |
renderer_identification [2019/08/26 00:46] – korshun | renderer_identification [2019/08/26 00:55] (current) – removed korshun |
---|
====== Renderer identification ====== | |
| |
===== Introduction ===== | |
| |
You can identify whether the software or OpenGL renderer is currently being used by using the ''IsOpenGL'' function from ACSUtils. | |
| |
<note warning> | |
**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 [[source_port_identification|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. | |
</note> | |
| |
===== 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, 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. | |
| |
<note important> | |
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. | |
</note> | |
| |
| |
===== How it works ===== | |
| |
First, ''IsOpenGL'' checks if it's running serverside (see above). | |
| |
Then ''IsOpenGL'' calls [[renderer_identification|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. | |
| |
| |