void RenderTarget::applyBlendMode(const BlendMode& mode) { // Apply the blend mode, falling back to the non-separate versions if necessary if (GLEXT_blend_func_separate) { glCheck(GLEXT_glBlendFuncSeparate( factorToGlConstant(mode.colorSrcFactor), factorToGlConstant(mode.colorDstFactor), factorToGlConstant(mode.alphaSrcFactor), factorToGlConstant(mode.alphaDstFactor))); } else { glCheck(glBlendFunc( factorToGlConstant(mode.colorSrcFactor), factorToGlConstant(mode.colorDstFactor))); } if (GLEXT_blend_equation_separate) { glCheck(GLEXT_glBlendEquationSeparate( equationToGlConstant(mode.colorEquation), equationToGlConstant(mode.alphaEquation))); } else { glCheck(GLEXT_glBlendEquation(equationToGlConstant(mode.colorEquation))); } m_cache.lastBlendMode = mode; }
void RenderTarget::applyBlendMode(const BlendMode& mode) { // Apply the blend mode, falling back to the non-separate versions if necessary //if (GLEXT_blend_func_separate) if (1) { glCheck(GLEXT_glBlendFuncSeparate( factorToGlConstant(mode.colorSrcFactor), factorToGlConstant(mode.colorDstFactor), factorToGlConstant(mode.alphaSrcFactor), factorToGlConstant(mode.alphaDstFactor))); } else { glCheck(glBlendFunc( factorToGlConstant(mode.colorSrcFactor), factorToGlConstant(mode.colorDstFactor))); } //if (GLEXT_blend_minmax && GLEXT_blend_subtract) if (1) { //if (GLEXT_blend_equation_separate) if (1) { glCheck(GLEXT_glBlendEquationSeparate( equationToGlConstant(mode.colorEquation), equationToGlConstant(mode.alphaEquation))); } else { glCheck(GLEXT_glBlendEquation(equationToGlConstant(mode.colorEquation))); } } else if ((mode.colorEquation != BlendMode::Add) || (mode.alphaEquation != BlendMode::Add)) { static bool warned = false; if (!warned) { err() << "OpenGL extension EXT_blend_minmax and/or EXT_blend_subtract unavailable" << std::endl; err() << "Selecting a blend equation not possible" << std::endl; err() << "Ensure that hardware acceleration is enabled if available" << std::endl; warned = true; } } m_cache.lastBlendMode = mode; }