#include <Cg/cgGL.h>
#endif
+#ifdef SUPPORTD3D
+#include <d3d9.h>
+#ifdef _MSC_VER
+#pragma comment(lib, "d3d9.lib")
+#endif
+
+LPDIRECT3DDEVICE9 vid_d3d9dev;
+#endif
+
// global video state
viddef_t vid;
{NULL, NULL}
};
-void VID_CheckExtensions(void)
+void VID_ClearExtensions(void)
{
+ // VorteX: reset extensions info cvar, it got filled by GL_CheckExtension
+ Cvar_SetQuick(&gl_info_extensions, "");
+
// clear the extension flags
memset(&vid.support, 0, sizeof(vid.support));
+ vid.renderpath = RENDERPATH_GL11;
+ vid.forcevbo = false;
+ vid.maxtexturesize_2d = 0;
+ vid.maxtexturesize_3d = 0;
+ vid.maxtexturesize_cubemap = 0;
+ vid.texunits = 1;
+ vid.teximageunits = 1;
+ vid.texarrayunits = 1;
+ vid.max_anisotropy = 1;
+ vid.maxdrawbuffers = 1;
- // VorteX: reset extensions info cvar, it got filled by GL_CheckExtension
- Cvar_SetQuick(&gl_info_extensions, "");
+ // this is a complete list of all functions that are directly checked in the renderer
+ qglDrawRangeElements = NULL;
+ qglDrawBuffer = NULL;
+ qglPolygonStipple = NULL;
+ qglFlush = NULL;
+ qglActiveTexture = NULL;
+ qglGetCompressedTexImageARB = NULL;
+ qglFramebufferTexture2DEXT = NULL;
+ qglDrawBuffersARB = NULL;
+}
+
+void VID_CheckExtensions(void)
+{
if (!GL_CheckExtension("1.1", opengl110funcs, NULL, false))
Sys_Error("OpenGL 1.1.0 functions not found");
Con_DPrint("Checking OpenGL extensions...\n");
- vid.forcevbo = false;
vid.support.amd_texture_texture4 = GL_CheckExtension("GL_AMD_texture_texture4", NULL, "-notexture4", false);
vid.support.arb_depth_texture = GL_CheckExtension("GL_ARB_depth_texture", NULL, "-nodepthtexture", false);
vid.support.arb_draw_buffers = GL_CheckExtension("GL_ARB_draw_buffers", drawbuffersfuncs, "-nodrawbuffers", false);
// COMMANDLINEOPTION: GL: -novbo disables GL_ARB_vertex_buffer_object (which accelerates rendering)
// COMMANDLINEOPTION: GL: -novertexshader disables GL_ARB_vertex_shader (allows vertex shader effects)
- vid.maxtexturesize_2d = 0;
- vid.maxtexturesize_3d = 0;
- vid.maxtexturesize_cubemap = 0;
- vid.texunits = 1;
- vid.teximageunits = 1;
- vid.texarrayunits = 1;
- vid.max_anisotropy = 1;
- vid.maxdrawbuffers = 1;
-
if (vid.support.arb_draw_buffers)
qglGetIntegerv(GL_MAX_DRAW_BUFFERS_ARB, (GLint*)&vid.maxdrawbuffers);
{
case RENDERPATH_GL20:
case RENDERPATH_CGGL:
+ case RENDERPATH_D3D9:
+ case RENDERPATH_D3D10:
+ case RENDERPATH_D3D11:
if (v_glslgamma.integer)
wantgamma = 0;
break;
mode.stereobuffer = stereobuffer != 0;
mode.samples = samples;
cl_ignoremousemoves = 2;
+ VID_ClearExtensions();
if (VID_InitMode(&mode))
{
// accept the (possibly modified) mode