From cca2e32c4abe70c0c16dbdeaef7e760a5ffa3ea8 Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 29 Dec 2018 23:27:16 +0800 Subject: *blend mode --- src/libjin/graphics/je_gl.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'src/libjin/graphics/je_gl.cpp') diff --git a/src/libjin/graphics/je_gl.cpp b/src/libjin/graphics/je_gl.cpp index d7a79d4..b0f113b 100644 --- a/src/libjin/graphics/je_gl.cpp +++ b/src/libjin/graphics/je_gl.cpp @@ -21,7 +21,6 @@ namespace JinEngine Canvas* const OpenGL::DEFAULT_CANVAS = new Canvas(0); OpenGL::OpenGL() - : mBlendMode(BlendMode::NONE) { memset(&mStats, 0, sizeof(mStats)); memset(&mColor, 0xff, sizeof(mColor)); @@ -36,6 +35,17 @@ namespace JinEngine { } + void OpenGL::init() + { + enable(GL_BLEND); + enable(GL_TEXTURE_2D); + setClearColor(0, 0, 0, 0xff); + setColor(0xff, 0xff, 0xff, 0xff); + setBlendMode(OpenGL::BlendMode::ALPHA); + unbindCanvas(); + unuseShader(); + } + void OpenGL::enable(GLenum cap) { glEnable(cap); @@ -263,6 +273,7 @@ namespace JinEngine { case BlendMode::ADDITIVE: srcRGB = GL_SRC_ALPHA; + srcA = GL_SRC_ALPHA; dstRGB = GL_ONE; dstA = GL_ONE; break; @@ -272,15 +283,10 @@ namespace JinEngine break; case BlendMode::ALPHA: default: - /*srcRGB = GL_SRC_ALPHA; - srcA = GL_ONE; + srcRGB = GL_SRC_ALPHA; // 0xff, 0xff, 0xff, 0渲染的问题,如果用GL_ONE,这些会保留下来 + srcA = GL_SRC_ALPHA; dstRGB = GL_ONE_MINUS_SRC_ALPHA; dstA = GL_ONE_MINUS_SRC_ALPHA; -*/ - srcRGB = GL_ONE; - srcA = GL_ONE; - dstRGB = GL_ZERO; - dstA = GL_ZERO; break; } -- cgit v1.1-26-g67d0