40 #include "../../common/tracing.h" 41 #include "../ui/ui_windows.h" 42 #include "../../ports/system.h" 43 #include "../client.h" 116 const size_t maxLength = strlen(msg);
119 for (
int i = 0;
i < maxLength;
i +=
length) {
150 glEnable(GL_SCISSOR_TEST);
152 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
154 glDisable(GL_SCISSOR_TEST);
164 for (
i = 0;
i < 4;
i++) {
182 for (
i = 0;
i < 4;
i++) {
194 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
197 glClear(GL_STENCIL_BUFFER_BIT);
199 glDepthFunc(GL_LEQUAL);
202 glDepthRange(0.0
f, 1.0
f);
229 Com_Printf(
"Modified render related cvars\n");
248 #ifndef GL_VERSION_ES_CM_1_0 253 glDrawBuffer(GL_FRONT);
255 glDrawBuffer(GL_BACK);
300 static int lastFrame = 0;
301 int deltaMsec =
cl.
time - lastFrame;
310 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
389 glClear(GL_DEPTH_BUFFER_BIT);
424 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
457 #if SDL_VERSION_ATLEAST(2,0,0) 458 SDL_SetWindowBrightness(
cls.window, g);
460 SDL_SetGamma(g, g, g);
470 #if SDL_VERSION_ATLEAST(2,0,0) 471 SDL_GL_SwapWindow(
cls.window);
473 SDL_GL_SwapBuffers();
478 {
"r_listimages",
R_ImageList_f,
"Show all loaded images on game console"},
481 {
"r_listmodels",
R_ModModellist_f,
"Show all loaded models on game console"},
482 {
"r_strings",
R_Strings_f,
"Print openGL vendor and other strings"},
485 {
nullptr,
nullptr,
nullptr}
493 Com_Printf(
"%s exceeded max supported texture size\n", cvar->
name);
532 int glslVersionMajor, glslVersionMinor;
533 sscanf(cvar->
string,
"%d.%d", &glslVersionMajor, &glslVersionMinor);
566 static void R_UpdateWeather (
const char* cvarName,
const char* oldValue,
const char* newValue,
void*
data)
581 r_nocull =
Cvar_Get(
"r_nocull",
"0", 0,
"Don't perform culling for brushes and entities");
601 r_wire =
Cvar_Get(
"r_wire",
"0", 0,
"Draw the scene in wireframe mode");
615 r_intel_hack =
Cvar_Get(
"r_intel_hack",
"1",
CVAR_ARCHIVE,
"Intel cards have no shaders until this is set to 0 - to it to a value > 1 to not limit the max texture resolution");
633 r_particles =
Cvar_Get(
"r_particles",
"1", 0,
"Activate or deactivate particle rendering");
677 if (screenRatio > normRatio) {
681 }
else if (screenRatio < normRatio) {
729 Com_Printf(
"Failed to set video mode %dx%d %s.\n",
731 (newCtx.
fullscreen ?
"fullscreen" :
"windowed"));
754 return (uintptr_t)SDL_GL_GetProcAddress(functionName);
759 const char* s = strstr(functionName,
"###");
764 const char* replace[] = {
"EXT",
"OES",
"ARB"};
767 const size_t replaceNo =
lengthof(replace);
768 for (
size_t i = 0;
i < replaceNo;
i++) {
790 #ifdef GL_VERSION_ES_CM_1_0 791 if(strcmp(extension,
"GL_ARB_texture_non_power_of_two") == 0) {
792 extension =
"GL_OES_texture_npot";
795 const char* s = strstr(extension,
"###");
799 const char* replace[] = {
"ARB",
"EXT",
"OES"};
802 const size_t replaceNo =
lengthof(replace);
804 for (
i = 0;
i < replaceNo;
i++) {
821 #ifdef GL_VERSION_ES_CM_1_0 822 if (strcmp(extension,
"GL_ARB_multitexture") == 0 ||
823 strcmp(extension,
"GL_ARB_vertex_buffer_object") == 0) {
825 Com_Printf(
"Overriding %s - it is always present in GLES\n", extension);
832 #define R_CheckGLVersion(max, min) (r_config.glVersionMajor > max || (r_config.glVersionMajor == max && r_config.glVersionMinor >= min)) 846 while(*versionNumbers && strchr(
"0123456789", *versionNumbers) ==
nullptr) {
849 if( *versionNumbers )
855 qglActiveTexture =
nullptr;
856 qglClientActiveTexture =
nullptr;
859 qglGenBuffers =
nullptr;
860 qglDeleteBuffers =
nullptr;
861 qglBindBuffer =
nullptr;
862 qglBufferData =
nullptr;
865 qglCreateShader =
nullptr;
866 qglDeleteShader =
nullptr;
867 qglShaderSource =
nullptr;
868 qglCompileShader =
nullptr;
869 qglGetShaderiv =
nullptr;
870 qglGetShaderInfoLog =
nullptr;
871 qglCreateProgram =
nullptr;
872 qglDeleteProgram =
nullptr;
873 qglAttachShader =
nullptr;
874 qglDetachShader =
nullptr;
875 qglLinkProgram =
nullptr;
876 qglUseProgram =
nullptr;
877 qglGetActiveUniform =
nullptr;
878 qglGetProgramiv =
nullptr;
879 qglGetProgramInfoLog =
nullptr;
880 qglGetUniformLocation =
nullptr;
881 qglUniform1i =
nullptr;
882 qglUniform1f =
nullptr;
883 qglUniform1fv =
nullptr;
884 qglUniform2fv =
nullptr;
885 qglUniform3fv =
nullptr;
886 qglUniform4fv =
nullptr;
887 qglGetAttribLocation =
nullptr;
888 qglUniformMatrix4fv =
nullptr;
891 qglEnableVertexAttribArray =
nullptr;
892 qglDisableVertexAttribArray =
nullptr;
893 qglVertexAttribPointer =
nullptr;
896 qglIsRenderbufferEXT =
nullptr;
897 qglBindRenderbufferEXT =
nullptr;
898 qglDeleteRenderbuffersEXT =
nullptr;
899 qglGenRenderbuffersEXT =
nullptr;
900 qglRenderbufferStorageEXT =
nullptr;
901 qglRenderbufferStorageMultisampleEXT =
nullptr;
902 qglGetRenderbufferParameterivEXT =
nullptr;
903 qglIsFramebufferEXT =
nullptr;
904 qglBindFramebufferEXT =
nullptr;
905 qglDeleteFramebuffersEXT =
nullptr;
906 qglGenFramebuffersEXT =
nullptr;
907 qglCheckFramebufferStatusEXT =
nullptr;
908 qglFramebufferTexture1DEXT =
nullptr;
909 qglFramebufferTexture2DEXT =
nullptr;
910 qglFramebufferTexture3DEXT =
nullptr;
911 qglFramebufferRenderbufferEXT =
nullptr;
912 qglGetFramebufferAttachmentParameterivEXT =
nullptr;
913 qglGenerateMipmapEXT =
nullptr;
914 qglDrawBuffers =
nullptr;
922 #ifndef GL_VERSION_ES_CM_1_0 925 Com_Printf(
"using GL_ARB_texture_compression\n");
939 Com_Printf(
"using GL_ARB_texture_non_power_of_two\n");
943 Com_Printf(
"ignoring GL_ARB_texture_non_power_of_two\n");
978 #ifndef GL_VERSION_ES_CM_1_0 1023 Com_Printf(
"GLSL version guaranteed to be supported by OpenGL implementation postfixed by vender supplied info: %i.%i\n",
1027 Com_Printf(
"GLSL shaders unsupported by OpenGL implementation.\n");
1053 if (qglDeleteRenderbuffersEXT && qglDeleteFramebuffersEXT && qglGenFramebuffersEXT && qglBindFramebufferEXT
1054 && qglFramebufferTexture2DEXT && qglBindRenderbufferEXT && qglRenderbufferStorageEXT && qglCheckFramebufferStatusEXT) {
1055 #ifdef GL_VERSION_ES_CM_1_0 1066 Com_Printf(
"using GL_ARB_framebuffer_object\n");
1071 Com_Printf(
"skipping GL_ARB_framebuffer_object - not every needed extension is supported\n");
1081 Com_Printf(
"Framebuffer objects unsupported by OpenGL implementation.\n");
1118 #ifdef GL_VERSION_ES_CM_1_0 1120 Com_Printf(
"max varying floats: %i\n", tmpInteger * 4);
1122 Com_Printf(
"max fragment uniform components: %i\n", tmpInteger * 4);
1124 Com_Printf(
"max vertex uniform components: %i\n", tmpInteger * 4);
1126 glGetIntegerv(GL_MAX_VARYING_FLOATS, &tmpInteger);
1127 Com_Printf(
"max varying floats: %i\n", tmpInteger);
1128 glGetIntegerv(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, &tmpInteger);
1129 Com_Printf(
"max fragment uniform components: %i\n", tmpInteger);
1130 glGetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, &tmpInteger);
1131 Com_Printf(
"max vertex uniform components: %i\n", tmpInteger);
1160 Com_Printf(
"Using high resolution globe textures as requested.\n");
1163 Com_Printf(
"Warning: high resolution globe textures requested, but could not be found; falling back to medium resolution globe textures.\n");
1165 Com_Printf(
"Using medium resolution globe textures as requested.\n");
1170 Com_Printf(
"Warning: medium resolution globe textures requested, but could not be found; falling back to low resolution globe textures.\n");
1172 Com_Printf(
"Using low resolution globe textures as requested.\n");
1187 #ifndef GL_VERSION_ES_CM_1_0 1217 #define INTEL_TEXTURE_RESOLUTION 1024 1225 if (!
Q_strcasecmp((
const char*)glGetString(GL_RENDERER),
"gdi generic"))
1227 "Update your graphic card drivers.");
1229 if (!
Q_strcasecmp((
const char*)glGetString(GL_RENDERER),
"Software Rasterizer"))
1231 "Update your graphic card drivers.");
1234 Com_Printf(
"You might want to activate texture compression if you have visual artifacts.\n");
1237 Com_Printf(
"Disabling shaders for Intel chips - see cvar r_intel_hack\n");
1259 Cvar_Set(
"r_vendor_non_intel",
"1");
cvar_t * r_screenshot_jpeg_quality
void Com_SetRenderModified(bool modified)
static cvar_t * r_ext_s3tc_compression
GLenum(APIENTRY * CheckFramebufferStatusEXT_t)(GLenum)
static cvar_t * r_ext_nonpoweroftwo
void R_RestartPrograms_f(void)
Reloads the glsl shaders.
void(APIENTRY * Uniform3fv_t)(GLint location, int count, GLfloat *f)
void(APIENTRY * BindBuffer_t)(GLenum target, GLuint id)
static bool R_CvarPostProcess(cvar_t *cvar)
cvar_t * r_overridematerial
void R_DrawParticles(void)
static void R_RegisterImageVars(void)
void(APIENTRY * DetachShader_t)(GLuint prog, GLuint shader)
cvarChangeListener_t * Cvar_RegisterChangeListener(const char *varName, cvarChangeListenerFunc_t listenerFunc)
Registers a listener that is executed each time a cvar changed its value.
#define GL_MAX_RENDERBUFFER_SIZE_EXT
void(APIENTRY * Uniform1i_t)(GLint location, GLint i)
void R_ShutdownFBObjects(void)
Delete all registered framebuffer and render buffer objects, clear memory.
renderer_threadstate_t r_threadstate
void R_DrawOpaqueMeshEntities(entity_t *ents)
light_t dynamicLights[MAX_GL_LIGHTS]
void R_AddBspRRef(const mBspModel_t *model, const vec3_t origin, const vec3_t angles, const bool forceVisibility)
Adds bsp render references.
#define GL_MAX_FRAGMENT_UNIFORM_VECTORS
void R_ScreenShot_f(void)
void(APIENTRY * GetShaderInfoLog_t)(GLuint id, GLuint maxlen, GLuint *len, GLchar *dest)
cvar_t * r_debug_tangents
bool Cvar_AssertValue(cvar_t *cvar, float minVal, float maxVal, bool shouldBeIntegral)
Checks cvar values.
void(APIENTRY * DisableVertexAttribArray_t)(GLuint index)
model_t * r_mapTiles[MAX_MAPTILES]
The world model(s)
static void R_Strings_f(void)
Prints some OpenGL strings.
void R_FontListCache_f(void)
Console command binding to show the font cache.
GLuint(APIENTRY * CreateShader_t)(GLenum type)
void R_DrawEntityEffects(void)
Draws shadow and highlight effects for the entities (actors)
void R_DrawNullEntities(const entity_t *ents)
Draw entities which models couldn't be loaded.
cvar_t * r_ext_texture_compression
static bool R_CvarCheckMultisample(cvar_t *cvar)
static void R_VerifyDriver(void)
Checks whether we have hardware acceleration.
#define GL_MAX_VARYING_VECTORS
void R_DrawBspNormals(int tile)
Developer tool for viewing BSP vertex normals. Only Phong interpolated surfaces show their normals wh...
void R_SetDefaultState(void)
void R_RenderMaterialBspRRefs(void)
local graphics definitions
void(APIENTRY * LinkProgram_t)(GLuint id)
void(APIENTRY * DeleteProgram_t)(GLuint id)
void(APIENTRY * ClientActiveTexture_t)(GLenum texture)
QGL_EXTERN GLsizei const GLvoid * data
void R_RenderAlphaTestBspRRefs(void)
void RotatePointAroundVector(vec3_t dst, const vec3_t dir, const vec3_t point, float degrees)
Rotate a point around a given vector.
void R_ShutdownImages(void)
void(APIENTRY * CompileShader_t)(GLuint id)
void R_SetupFrustum(void)
static const char * R_TranslateError(GLenum error)
void(APIENTRY * FramebufferTexture1DEXT_t)(GLenum, GLenum, GLenum, GLuint, GLint)
void Com_Printf(const char *const fmt,...)
const char * rendererString
static bool R_CvarCheckMaxLightmap(cvar_t *cvar)
void(APIENTRY * UniformMatrix4fv_t)(GLint location, int count, GLboolean transpose, GLfloat *v)
void R_UpdateDefaultMaterial(const char *cvarName, const char *oldValue, const char *newValue, void *data)
Change listener callback for material value cvars.
static uintptr_t R_GetProcAddressExt(const char *functionName)
#define LIGHTMAP_DEFAULT_PAGE_SIZE
GLboolean(APIENTRY * IsFramebufferEXT_t)(GLuint)
void(APIENTRY * BindRenderbufferEXT_t)(GLenum, GLuint)
static cvar_t * r_intel_hack
bool Cvar_PendingCvars(int flags)
Checks whether there are pending cvars for the given flags.
#define VectorScale(in, scale, out)
static cvar_t * r_texturealphamode
void R_SphereInit(void)
Creates the spheres we need for rendering the 3d globe.
void(APIENTRY * BufferData_t)(GLenum target, GLsizei size, const GLvoid *data, GLenum usage)
int maxVertexTextureImageUnits
void R_TextureMode(const char *string)
void(APIENTRY * DeleteFramebuffersEXT_t)(GLsizei, const GLuint *)
void Cmd_TableRemoveList(const cmdList_t *cmdList)
void R_DrawBoundingBoxes(void)
static cvar_t * r_texturesolidmode
static void R_ClearScene(void)
void R_Color(const vec4_t rgba)
Change the color to given value.
void Com_Error(int code, const char *fmt,...)
void R_ImageList_f(void)
Shows all loaded images.
entity_t * r_blend_mesh_entities
void R_InitMiscTexture(void)
void R_EnableMultisample(bool enable)
void(APIENTRY * RenderbufferStorageMultisampleEXT_t)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)
void Sys_Sleep(int milliseconds)
Calls the win32 sleep function.
void R_ClearBspRRefs(void)
void(APIENTRY * GenFramebuffersEXT_t)(GLsizei, GLuint *)
void Q_strncpyz(char *dest, const char *src, size_t destsize)
Safe strncpy that ensures a trailing zero.
void AngleVectors(const vec3_t angles, vec3_t forward, vec3_t right, vec3_t up)
Create the rotation matrix in order to rotate something.
void setDefaults(void)
Sets clean weather, but generate some parameters usable for easily changing it into the worse varieti...
void(APIENTRY * DeleteShader_t)(GLuint id)
#define R_CheckGLVersion(max, min)
#define DotProduct(x, y)
Returns the distance between two 3-dimensional vectors.
static bool R_SearchForVendor(const char *vendor)
Searches vendor and renderer GL strings for the given vendor id.
const char * vendorString
cvar_t * Cvar_Get(const char *var_name, const char *var_value, int flags, const char *desc)
Init or return a cvar.
void(APIENTRY * GetFramebufferAttachmentParameterivEXT_t)(GLenum, GLenum, GLenum, GLint *)
static bool R_CvarPrograms(cvar_t *cvar)
void R_DrawSpecialEntities(const entity_t *ents)
void(APIENTRY * BindFramebufferEXT_t)(GLenum, GLuint)
QGL_EXTERN GLuint GLsizei GLsizei * length
void(APIENTRY * GenRenderbuffersEXT_t)(GLsizei, GLuint *)
void(APIENTRY * DrawBuffers_t)(GLsizei, const GLenum *)
const char * Q_stristr(const char *str, const char *substr)
Checks in case insensitive manner whether str contains substr.
bool R_InitGraphics(const viddefContext_t *context)
Init the SDL window.
void R_InitFBObjects(void)
void R_ModModellist_f(void)
Prints all loaded models.
void(APIENTRY * EnableVertexAttribArray_t)(GLuint index)
void R_ResetArrayState(void)
static void R_EnforceVersion(void)
We need at least opengl version 1.2.1.
void R_ShutdownPrograms(void)
void(APIENTRY * RenderbufferStorageEXT_t)(GLenum, GLenum, GLsizei, GLsizei)
entity_t * r_null_entities
hardwareType_t hardwareType
int gl_compressed_alpha_format
#define GL_SHADING_LANGUAGE_VERSION
void update(int milliseconds)
Updates weather for the time passed; handles particle creation/removal automatically.
#define GL_MAX_TEXTURE_COORDS
void(APIENTRY * Uniform1f_t)(GLint location, GLfloat f)
void R_GetLevelSurfaceLists(void)
Fills the surface chains for the current worldlevel and hide other levels.
void(APIENTRY * DeleteRenderbuffersEXT_t)(GLsizei, const GLuint *)
cvar_t * r_stencilshadows
static void R_UpdateVidDef(const viddefContext_t *context)
#define Q_strcasecmp(a, b)
GLboolean(APIENTRY * IsRenderbufferEXT_t)(GLuint)
GLuint(APIENTRY * CreateProgram_t)(void)
void R_FontShutdown(void)
frees the SDL_ttf fonts
void R_TextureSolidMode(const char *string)
void(APIENTRY * FramebufferTexture2DEXT_t)(GLenum, GLenum, GLenum, GLuint, GLint)
void R_RenderOpaqueBspRRefs(void)
Draw all simple opaque bsp surfaces with multitexture enabled and light enabled.
static cvar_t * r_maxtexres
#define INTEL_TEXTURE_RESOLUTION
static void R_PrintInfo(const char *pre, const char *msg)
QGL_EXTERN const GLuint *QGL_EXTERN GLuint *QGL_EXTERN GLenum
void(APIENTRY * Uniform1fv_t)(GLint location, int count, GLfloat *f)
static uintptr_t R_GetProcAddress(const char *functionName)
void(APIENTRY * GetRenderbufferParameterivEXT_t)(GLenum, GLenum, GLint *)
#define GL_MAX_VERTEX_ATTRIBS
#define MAX_ENTITY_LIGHTS
void(APIENTRY * AttachShader_t)(GLuint prog, GLuint shader)
void(APIENTRY * FramebufferTexture3DEXT_t)(GLenum, GLenum, GLenum, GLuint, GLint, GLint)
static bool R_CheckExtension(const char *extension)
Checks for an OpenGL extension that was announced via the OpenGL ext string. If the given extension s...
static void R_InitExtensions(void)
Check and load all needed and supported opengl extensions.
Contains the game screen context, everything that is needed to create the graphic context...
#define LIGHTMAP_MAX_PAGE_SIZE
Pseudoinstanced grass generation and rendering.
void render(void)
Draws weather effects.
void(APIENTRY * ActiveTexture_t)(GLenum texture)
void R_DrawBlendMeshEntities(entity_t *ents)
void(APIENTRY * GetProgramiv_t)(GLuint id, GLenum field, GLuint *dest)
void R_UpdateSustainedLights(void)
Updates state of sustained lights; should be called once per frame right before world rendering...
void(APIENTRY * GetShaderiv_t)(GLuint id, GLenum field, GLuint *dest)
Weather r_battlescapeWeather
void Cvar_Reset(cvar_t *cvar)
Sets the cvar value back to the old value.
light_t staticLights[MAX_STATIC_LIGHTS]
void(APIENTRY * ShaderSource_t)(GLuint id, GLuint count, GLchar **sources, GLuint *len)
entity_t * r_special_entities
void R_EnableBlend(bool enable)
static bool R_CvarCheckDynamicLights(cvar_t *cvar)
static bool R_CvarGLSLVersionCheck(cvar_t *cvar)
Callback that is called when the r_glsl_version cvar is changed,.
static const cmdList_t r_commands[]
bool Com_IsRenderModified(void)
cvar_t * r_default_hardness
void(APIENTRY * Uniform4fv_t)(GLint location, int count, GLfloat *f)
GLint(APIENTRY * GetAttribLocation_t)(GLuint id, const GLchar *name)
void(APIENTRY * GetActiveUniforms_t)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
void R_TextureAlphaMode(const char *string)
bool VID_GetModeInfo(int modeIndex, vidmode_t *modeInfo)
entity_t * r_opaque_mesh_entities
void R_AddCorona(const vec3_t org, float radius, const vec3_t color)
void R_GetEntityLists(void)
Primary entry point for drawing all entities.
void changeTo(weatherTypes weather)
changes to weather of given type; parameters are randomized
#define GL_MAX_VERTEX_UNIFORM_VECTORS
bool Q_strreplace(const char *source, const char *pattern, const char *replace, char *dest, size_t destsize)
Replaces the first occurence of the given pattern in the source string with the given replace string...
void R_RenderBlendBspRRefs(void)
Draw all translucent bsp surfaces with multitexture enabled and blend enabled.
void R_ShutdownThreads(void)
const char * versionString
static void R_Clear(void)
Clears the screens color and depth buffer.
#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
cvar_t * r_glsl_version
The GLSL version being used (not necessarily a supported version by the OpenGL implementation). Stored as a c-string and integer.
void UI_InvalidateStack(void)
Invalidate all windows of the current stack.
void R_DrawBloom(void)
handle post-processing bloom
cvar_t * Cvar_Set(const char *varName, const char *value,...)
Sets a cvar value.
void(APIENTRY * GetProgramInfoLog_t)(GLuint id, GLuint maxlen, GLuint *len, GLchar *dest)
void R_DrawInitLocal(void)
Loads some textures and init the 3d globe.
void(APIENTRY * FramebufferRenderbufferEXT_t)(GLenum, GLenum, GLenum, GLuint)
void(APIENTRY * DeleteBuffers_t)(GLuint count, GLuint *id)
void(APIENTRY * BlitFramebuffer_t)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum)
void(APIENTRY * GenerateMipmapEXT_t)(GLenum)
void R_RenderBlendWarpBspRRefs(void)
Draw all warped translucent bsp surfaces via warp shader and with blend enabled.
static void R_UpdateWeather(const char *cvarName, const char *oldValue, const char *newValue, void *data)
static cvar_t * r_texturemode
bool Q_IsPowerOfTwo(int i)
Checks whether i is power of two value.
void Cvar_ClearVars(int flags)
Functions to generate and render spheres.
Weather effects rendering subsystem header file.
cvar_t * r_screenshot_format
void(APIENTRY * UseProgram_t)(GLuint id)
cvar_t * r_default_specular
void Cvar_SetValue(const char *varName, float value)
Expands value to a string and calls Cvar_Set.
void(APIENTRY * Uniform2fv_t)(GLint location, int count, GLfloat *f)
const char * extensionsString
static void R_RegisterSystemVars(void)
void R_InitPrograms(void)
This is a cvar definition. Cvars can be user modified and used in our menus e.g.
GLint(APIENTRY * GetUniformLocation_t)(GLuint id, const GLchar *name)
void(APIENTRY * VertexAttribPointer_t)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer)
bool Cvar_SetCheckFunction(const char *varName, bool(*check)(cvar_t *cvar))
Set a checker function for cvar values.
static cvar_t * r_deluxemap
void R_RenderOpaqueWarpBspRRefs(void)
Draw all warped opaque bsp surfaces via warp shader.
cvar_t * r_dynamic_lights
void R_RenderFlareBspRRefs(void)
void(APIENTRY * GenBuffers_t)(GLuint count, GLuint *id)
void R_EnableFog(bool enable)
static bool R_CvarCheckWeather(cvar_t *cvar)
bool R_ImageExists(const char *pname,...)
void Cmd_TableAddList(const cmdList_t *cmdList)
int gl_compressed_solid_format