diff options
Diffstat (limited to 'src/libjin')
-rw-r--r-- | src/libjin/graphics/je_gl.cpp | 22 | ||||
-rw-r--r-- | src/libjin/graphics/je_gl.h | 9 | ||||
-rw-r--r-- | src/libjin/graphics/je_window.cpp | 10 |
3 files changed, 20 insertions, 21 deletions
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; } diff --git a/src/libjin/graphics/je_gl.h b/src/libjin/graphics/je_gl.h index d6edc2f..8711824 100644 --- a/src/libjin/graphics/je_gl.h +++ b/src/libjin/graphics/je_gl.h @@ -32,10 +32,9 @@ namespace JinEngine /// enum class BlendMode { - NONE = 0, - ALPHA, - ADDITIVE, - PREMULTIPLIEDALPHA, + ALPHA = 1, + ADDITIVE = 2, + PREMULTIPLIEDALPHA = 3, }; struct Stats @@ -56,6 +55,8 @@ namespace JinEngine OpenGL(); ~OpenGL(); + void init(); + void enable(GLenum cap); void disable(GLenum cap); diff --git a/src/libjin/graphics/je_window.cpp b/src/libjin/graphics/je_window.cpp index f41e699..25d003f 100644 --- a/src/libjin/graphics/je_window.cpp +++ b/src/libjin/graphics/je_window.cpp @@ -88,15 +88,7 @@ namespace JinEngine SDL_GL_SetSwapInterval(vsync ? 1 : 0); SDL_GL_MakeCurrent(mWnd, ctx); // Default configuration. - gl.enable(GL_BLEND); - gl.enable(GL_TEXTURE_2D); - gl.setClearColor(0, 0, 0, 0); - gl.setColor(0xff, 0xff, 0xff, 0xff); - // Default blend function. - gl.setBlendMode(OpenGL::BlendMode::ALPHA); - // Bind to default canvas. - gl.unbindCanvas(); - gl.unuseShader(); + gl.init(); return true; } |