]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - gl_backend.c
fix C++ compile errors
[xonotic/darkplaces.git] / gl_backend.c
index cdc4df603e951944b7d9a202c94e3315559aa402..0c3e73915e2192045b8645231d7ff6746680b274 100644 (file)
@@ -2113,35 +2113,6 @@ void GL_CullFace(int state)
        }
 }
 
-void GL_MultiSampling(qboolean state)
-{
-       switch(vid.renderpath)
-       {
-               case RENDERPATH_GL11:
-               case RENDERPATH_GL13:
-               case RENDERPATH_GLES1:
-               case RENDERPATH_GL20:
-               case RENDERPATH_GLES2:
-                       if (vid.support.arb_multisample && vid.mode.samples > 1)
-                       {
-                               if (state)
-                                       qglEnable(GL_MULTISAMPLE_ARB);
-                               else
-                                       qglDisable(GL_MULTISAMPLE_ARB);
-                               CHECKGLERROR
-                       }
-                       break;
-               case RENDERPATH_D3D9:
-                       break;
-               case RENDERPATH_D3D10:
-                       break;
-               case RENDERPATH_D3D11:
-                       break;
-               case RENDERPATH_SOFT:
-                       break;
-       }
-}
-
 void GL_AlphaTest(int state)
 {
        if (gl_state.alphatest != state)
@@ -2192,19 +2163,16 @@ void GL_AlphaToCoverage(qboolean state)
                        break;
                case RENDERPATH_GL20:
                        // alpha to coverage turns the alpha value of the pixel into 0%, 25%, 50%, 75% or 100% by masking the multisample fragments accordingly
-                       if (vid.support.arb_multisample && vid.mode.samples > 1)
+                       CHECKGLERROR
+                       if (gl_state.alphatocoverage)
                        {
-                               CHECKGLERROR
-                               if (gl_state.alphatocoverage)
-                               {
-                                       qglEnable(GL_SAMPLE_ALPHA_TO_COVERAGE_ARB);CHECKGLERROR
-                                       qglEnable(GL_MULTISAMPLE_ARB);CHECKGLERROR
-                               }
-                               else
-                               {
-                                       qglDisable(GL_SAMPLE_ALPHA_TO_COVERAGE_ARB);CHECKGLERROR
-                                       qglDisable(GL_MULTISAMPLE_ARB);CHECKGLERROR
-                               }
+                               qglEnable(GL_SAMPLE_ALPHA_TO_COVERAGE_ARB);CHECKGLERROR
+//                             qglEnable(GL_MULTISAMPLE_ARB);CHECKGLERROR
+                       }
+                       else
+                       {
+                               qglDisable(GL_SAMPLE_ALPHA_TO_COVERAGE_ARB);CHECKGLERROR
+//                             qglDisable(GL_MULTISAMPLE_ARB);CHECKGLERROR
                        }
                        break;
                }
@@ -4428,3 +4396,61 @@ void R_Mesh_PrepareVertices_Mesh(int numvertices, const r_vertexmesh_t *vertex,
                break;
        }
 }
+
+void GL_BlendEquationSubtract(qboolean negated)
+{
+       if(negated)
+       {
+               switch(vid.renderpath)
+               {
+               case RENDERPATH_GL11:
+               case RENDERPATH_GL13:
+               case RENDERPATH_GL20:
+               case RENDERPATH_GLES1:
+               case RENDERPATH_GLES2:
+                       qglBlendEquationEXT(GL_FUNC_REVERSE_SUBTRACT_EXT);
+                       break;
+               case RENDERPATH_D3D9:
+#ifdef SUPPORTD3D
+                       IDirect3DDevice9_SetRenderState(vid_d3d9dev, D3DRS_BLENDOP, D3DBLENDOP_SUBTRACT);
+#endif
+                       break;
+               case RENDERPATH_D3D10:
+                       Con_DPrintf("FIXME D3D10 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
+                       break;
+               case RENDERPATH_D3D11:
+                       Con_DPrintf("FIXME D3D11 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
+                       break;
+               case RENDERPATH_SOFT:
+                       DPSOFTRAST_BlendSubtract(true);
+                       break;
+               }
+       }
+       else
+       {
+               switch(vid.renderpath)
+               {
+               case RENDERPATH_GL11:
+               case RENDERPATH_GL13:
+               case RENDERPATH_GL20:
+               case RENDERPATH_GLES1:
+               case RENDERPATH_GLES2:
+                       qglBlendEquationEXT(GL_FUNC_ADD_EXT);
+                       break;
+               case RENDERPATH_D3D9:
+#ifdef SUPPORTD3D
+                       IDirect3DDevice9_SetRenderState(vid_d3d9dev, D3DRS_BLENDOP, D3DBLENDOP_ADD);
+#endif
+                       break;
+               case RENDERPATH_D3D10:
+                       Con_DPrintf("FIXME D3D10 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
+                       break;
+               case RENDERPATH_D3D11:
+                       Con_DPrintf("FIXME D3D11 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
+                       break;
+               case RENDERPATH_SOFT:
+                       DPSOFTRAST_BlendSubtract(false);
+                       break;
+               }
+       }
+}