MCPcopy Create free account
hub / github.com/assaultcube/AC / gl_checkextensions

Function gl_checkextensions

source/src/rendergl.cpp:52–126  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

50VAR(ati_mda_bug, 0, 0, 1);
51
52void gl_checkextensions()
53{
54 const char *vendor = (const char *)glGetString(GL_VENDOR);
55 const char *exts = (const char *)glGetString(GL_EXTENSIONS);
56 const char *renderer = (const char *)glGetString(GL_RENDERER);
57 const char *version = (const char *)glGetString(GL_VERSION);
58 conoutf("Renderer: %s (%s)", renderer, vendor);
59 conoutf("Driver: %s", version);
60
61 if(hasext(exts, "GL_EXT_texture_env_combine") || hasext(exts, "GL_ARB_texture_env_combine")) hasTE = true;
62 else conoutf("WARNING: cannot use overbright lighting, using old lighting model!");
63
64 if(hasext(exts, "GL_ARB_multitexture"))
65 {
66 glActiveTexture_ = (PFNGLACTIVETEXTUREARBPROC) getprocaddress("glActiveTextureARB");
67 glClientActiveTexture_ = (PFNGLCLIENTACTIVETEXTUREARBPROC)getprocaddress("glClientActiveTextureARB");
68 glMultiTexCoord2f_ = (PFNGLMULTITEXCOORD2FARBPROC) getprocaddress("glMultiTexCoord2fARB");
69 glMultiTexCoord3f_ = (PFNGLMULTITEXCOORD3FARBPROC) getprocaddress("glMultiTexCoord3fARB");
70 hasMT = true;
71 }
72
73 if(hasext(exts, "GL_EXT_multi_draw_arrays"))
74 {
75 glMultiDrawArrays_ = (PFNGLMULTIDRAWARRAYSEXTPROC) getprocaddress("glMultiDrawArraysEXT");
76 glMultiDrawElements_ = (PFNGLMULTIDRAWELEMENTSEXTPROC)getprocaddress("glMultiDrawElementsEXT");
77 hasMDA = true;
78
79 if(strstr(vendor, "ATI") || strstr(renderer, "Mesa") || strstr(version, "Mesa")) ati_mda_bug = 1;
80 }
81
82 if(hasext(exts, "GL_EXT_draw_range_elements"))
83 {
84 glDrawRangeElements_ = (PFNGLDRAWRANGEELEMENTSEXTPROC)getprocaddress("glDrawRangeElementsEXT");
85 hasDRE = true;
86 }
87
88 if(hasext(exts, "GL_EXT_stencil_two_side"))
89 {
90 glActiveStencilFace_ = (PFNGLACTIVESTENCILFACEEXTPROC)getprocaddress("glActiveStencilFaceEXT");
91 hasST2 = true;
92 }
93
94 if(hasext(exts, "GL_ATI_separate_stencil"))
95 {
96 glStencilOpSeparate_ = (PFNGLSTENCILOPSEPARATEATIPROC) getprocaddress("glStencilOpSeparateATI");
97 glStencilFuncSeparate_ = (PFNGLSTENCILFUNCSEPARATEATIPROC)getprocaddress("glStencilFuncSeparateATI");
98 hasSTS = true;
99 }
100
101 if(hasext(exts, "GL_EXT_stencil_wrap")) hasSTW = true;
102
103 if(hasext(exts, "GL_EXT_texture_filter_anisotropic"))
104 {
105 GLint val;
106 glGetIntegerv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &val);
107 hwmaxaniso = val;
108 hasAF = true;
109 }

Callers 1

main.cppFile · 0.85

Calls 3

hasextFunction · 0.85
getprocaddressFunction · 0.85
conoutfFunction · 0.70

Tested by

no test coverage detected