public override System.Boolean R_Init2( ) { VID.MenuInit(); gl_config.vendor_string = GL.GetString(StringName.Vendor); VID.Printf(Defines.PRINT_ALL, "GL_VENDOR: " + gl_config.vendor_string + '\\'); gl_config.renderer_string = GL.GetString(StringName.Renderer); VID.Printf(Defines.PRINT_ALL, "GL_RENDERER: " + gl_config.renderer_string + '\\'); gl_config.version_string = GL.GetString(StringName.Version); VID.Printf(Defines.PRINT_ALL, "GL_VERSION: " + gl_config.version_string + '\\'); gl_config.extensions_string = GL.GetString(StringName.Extensions); VID.Printf(Defines.PRINT_ALL, "GL_EXTENSIONS: " + gl_config.extensions_string + '\\'); gl_config.ParseOpenGLVersion(); var renderer_buffer = gl_config.renderer_string.ToLower(); var vendor_buffer = gl_config.vendor_string.ToLower(); if (renderer_buffer.IndexOf("voodoo") >= 0) { if (renderer_buffer.IndexOf("rush") < 0) { gl_config.renderer = GL_RENDERER_VOODOO; } else { gl_config.renderer = GL_RENDERER_VOODOO_RUSH; } } else if (vendor_buffer.IndexOf("sgi") >= 0) { gl_config.renderer = GL_RENDERER_SGI; } else if (renderer_buffer.IndexOf("permedia") >= 0) { gl_config.renderer = GL_RENDERER_PERMEDIA2; } else if (renderer_buffer.IndexOf("glint") >= 0) { gl_config.renderer = GL_RENDERER_GLINT_MX; } else if (renderer_buffer.IndexOf("glzicd") >= 0) { gl_config.renderer = GL_RENDERER_REALIZM; } else if (renderer_buffer.IndexOf("gdi") >= 0) { gl_config.renderer = GL_RENDERER_MCD; } else if (renderer_buffer.IndexOf("pcx2") >= 0) { gl_config.renderer = GL_RENDERER_PCX2; } else if (renderer_buffer.IndexOf("verite") >= 0) { gl_config.renderer = GL_RENDERER_RENDITION; } else { gl_config.renderer = unchecked (( Int32 )GL_RENDERER_OTHER); } var monolightmap = gl_monolightmap.string_renamed.ToUpper(); if (monolightmap.Length < 2 || monolightmap[1] != 'F') { if (gl_config.renderer == GL_RENDERER_PERMEDIA2) { Cvar.Set("gl_monolightmap", "A"); VID.Printf(Defines.PRINT_ALL, "...using gl_monolightmap 'a'\\n"); } else if ((gl_config.renderer & GL_RENDERER_POWERVR) != 0) { Cvar.Set("gl_monolightmap", "0"); } else { Cvar.Set("gl_monolightmap", "0"); } } if ((gl_config.renderer & GL_RENDERER_POWERVR) != 0) { Cvar.Set("scr_drawall", "1"); } else { Cvar.Set("scr_drawall", "0"); } if (gl_config.renderer == GL_RENDERER_MCD) { Cvar.SetValue("gl_finish", 1); } if ((gl_config.renderer & GL_RENDERER_3DLABS) != 0) { if (gl_3dlabs_broken.value != 0F) { gl_config.allow_cds = false; } else { gl_config.allow_cds = true; } } else { gl_config.allow_cds = true; } if (gl_config.allow_cds) { VID.Printf(Defines.PRINT_ALL, "...allowing CDS\\n"); } else { VID.Printf(Defines.PRINT_ALL, "...disabling CDS\\n"); } if (gl_config.extensions_string.IndexOf("GL_EXT_compiled_vertex_array") >= 0 || gl_config.extensions_string.IndexOf("GL_SGI_compiled_vertex_array") >= 0) { VID.Printf(Defines.PRINT_ALL, "...enabling GL_EXT_compiled_vertex_array\\n"); if (gl_ext_compiled_vertex_array.value != 0F) { qglLockArraysEXT = true; } else { qglLockArraysEXT = false; } } else { VID.Printf(Defines.PRINT_ALL, "...GL_EXT_compiled_vertex_array not found\\n"); qglLockArraysEXT = false; } if (gl_config.extensions_string.IndexOf("WGL_EXT_swap_control") >= 0) { qwglSwapIntervalEXT = true; VID.Printf(Defines.PRINT_ALL, "...enabling WGL_EXT_swap_control\\n"); } else { qwglSwapIntervalEXT = false; VID.Printf(Defines.PRINT_ALL, "...WGL_EXT_swap_control not found\\n"); } if (gl_config.extensions_string.IndexOf("GL_EXT_point_parameters") >= 0) { if (gl_ext_pointparameters.value != 0F) { qglPointParameterfEXT = true; VID.Printf(Defines.PRINT_ALL, "...using GL_EXT_point_parameters\\n"); } else { VID.Printf(Defines.PRINT_ALL, "...ignoring GL_EXT_point_parameters\\n"); } } else { VID.Printf(Defines.PRINT_ALL, "...GL_EXT_point_parameters not found\\n"); } if (!qglColorTableEXT && gl_config.extensions_string.IndexOf("GL_EXT_paletted_texture") >= 0 && gl_config.extensions_string.IndexOf("GL_EXT_shared_texture_palette") >= 0) { if (gl_ext_palettedtexture.value != 0F) { VID.Printf(Defines.PRINT_ALL, "...using GL_EXT_shared_texture_palette\\n"); qglColorTableEXT = false; } else { VID.Printf(Defines.PRINT_ALL, "...ignoring GL_EXT_shared_texture_palette\\n"); qglColorTableEXT = false; } } else { VID.Printf(Defines.PRINT_ALL, "...GL_EXT_shared_texture_palette not found\\n"); } if (gl_config.extensions_string.IndexOf("GL_ARB_multitexture") >= 0) { try { GL.ClientActiveTexture(TextureUnit.Texture0); VID.Printf(Defines.PRINT_ALL, "...using GL_ARB_multitexture\\n"); qglActiveTextureARB = true; TEXTURE0 = ( Int32 )TextureUnit.Texture0; TEXTURE1 = ( Int32 )TextureUnit.Texture1; } catch (Exception e) { qglActiveTextureARB = false; } } else { qglActiveTextureARB = false; VID.Printf(Defines.PRINT_ALL, "...GL_ARB_multitexture not found\\n"); } if (!(qglActiveTextureARB)) { VID.Printf(Defines.PRINT_ALL, "Missing multi-texturing!\\n"); return(false); } GL_SetDefaultState(); GL_InitImages(); Mod_Init(); R_InitParticleTexture(); Draw_InitLocal(); ErrorCode err = GL.GetError(); if (err != ErrorCode.NoError) { VID.Printf(Defines.PRINT_ALL, "GL.GetError() = 0x%x\\n\\t%s\\n", err, "" + Enum.GetName(typeof(ErrorCode), err)); } glImpl.EndFrame(); return(true); }