Fix disabling blending,

--HG--
branch : minor
This commit is contained in:
Alex Szpakowski
2019-12-27 13:28:15 -05:00
parent b41f1316fa
commit 6c662ade41
3 changed files with 20 additions and 9 deletions
+15 -9
View File
@@ -206,7 +206,7 @@ bool Graphics::setMode(int width, int height, int pixelwidth, int pixelheight, b
setViewportSize(width, height, pixelwidth, pixelheight);
// Enable blending
glEnable(GL_BLEND);
gl.setEnableState(OpenGL::ENABLE_BLEND, true);
// Auto-generated mipmaps should be the best quality possible
if (!gl.isCoreProfile())
@@ -1280,15 +1280,21 @@ void Graphics::setBlendState(const BlendState &blend)
throw love::Exception("The 'min' and 'max' blend operations are not supported on this system.");
}
GLenum opRGB = getGLBlendOperation(blend.operationRGB);
GLenum opA = getGLBlendOperation(blend.operationA);
GLenum srcRGB = getGLBlendFactor(blend.srcFactorRGB);
GLenum srcA = getGLBlendFactor(blend.srcFactorA);
GLenum dstRGB = getGLBlendFactor(blend.dstFactorRGB);
GLenum dstA = getGLBlendFactor(blend.dstFactorA);
if (blend.enable != gl.isStateEnabled(OpenGL::ENABLE_BLEND))
gl.setEnableState(OpenGL::ENABLE_BLEND, blend.enable);
glBlendEquationSeparate(opRGB, opA);
glBlendFuncSeparate(srcRGB, dstRGB, srcA, dstA);
if (blend.enable)
{
GLenum opRGB = getGLBlendOperation(blend.operationRGB);
GLenum opA = getGLBlendOperation(blend.operationA);
GLenum srcRGB = getGLBlendFactor(blend.srcFactorRGB);
GLenum srcA = getGLBlendFactor(blend.srcFactorA);
GLenum dstRGB = getGLBlendFactor(blend.dstFactorRGB);
GLenum dstA = getGLBlendFactor(blend.dstFactorA);
glBlendEquationSeparate(opRGB, opA);
glBlendFuncSeparate(srcRGB, dstRGB, srcA, dstA);
}
states.back().blend = blend;
}
+4
View File
@@ -205,6 +205,7 @@ void OpenGL::setupContext()
state.boundFramebuffers[i] = std::numeric_limits<GLuint>::max();
bindFramebuffer(FRAMEBUFFER_ALL, getDefaultFBO());
setEnableState(ENABLE_BLEND, state.enableState[ENABLE_BLEND]);
setEnableState(ENABLE_DEPTH_TEST, state.enableState[ENABLE_DEPTH_TEST]);
setEnableState(ENABLE_STENCIL_TEST, state.enableState[ENABLE_STENCIL_TEST]);
setEnableState(ENABLE_SCISSOR_TEST, state.enableState[ENABLE_SCISSOR_TEST]);
@@ -810,6 +811,9 @@ void OpenGL::setEnableState(EnableState enablestate, bool enable)
switch (enablestate)
{
case ENABLE_BLEND:
glstate = GL_BLEND;
break;
case ENABLE_DEPTH_TEST:
glstate = GL_DEPTH_TEST;
break;
+1
View File
@@ -94,6 +94,7 @@ public:
enum EnableState
{
ENABLE_BLEND,
ENABLE_DEPTH_TEST,
ENABLE_STENCIL_TEST,
ENABLE_SCISSOR_TEST,