diff options
Diffstat (limited to 'src/libjin/Graphics/Canvas.cpp')
-rw-r--r-- | src/libjin/Graphics/Canvas.cpp | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/src/libjin/Graphics/Canvas.cpp b/src/libjin/Graphics/Canvas.cpp deleted file mode 100644 index f222721..0000000 --- a/src/libjin/Graphics/Canvas.cpp +++ /dev/null @@ -1,102 +0,0 @@ -#include "../configuration.h" -#if LIBJIN_MODULES_RENDER - -#include "../utils/macros.h" -#include "canvas.h" -#include "window.h" - -namespace jin -{ - namespace graphics - { - - /*class member*/ const Canvas* Canvas::current = nullptr; - /*class member*/ const Canvas* const Canvas::DEFAULT_CANVAS = new Canvas(0); - - /*class member*/ Canvas* Canvas::createCanvas(int w, int h) - { - return new Canvas(w, h); - } - - Canvas::Canvas(GLuint n) - : fbo(n) - { - } - - Canvas::Canvas(int w, int h) - : Drawable(w, h) - { - GLint current_fbo; - glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, ¤t_fbo); - - // generate a new render buffer object - fbo = gl.genFrameBuffer(); - gl.bindFrameBuffer(fbo); - - // generate texture save target - texture = gl.genTexture(); - gl.bindTexture(texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - gl.texImage(GL_RGBA8, w, h, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - gl.bindTexture(0); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0); - - GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); - - /* unbind framebuffer */ - gl.bindFrameBuffer(current_fbo); - } - - Canvas::~Canvas() - { - } - - /*class member*/ bool Canvas::isBinded(const Canvas* cvs) - { - return current == cvs; - } - - /** - * bind to canvas - */ - /*class member*/ void Canvas::bind(Canvas* canvas) - { - if (isBinded(canvas)) return; - current = canvas; - gl.bindFrameBuffer(canvas->fbo); - int w = canvas->size.w; - int h = canvas->size.h; - /* set view port to canvas */ - glViewport(0, 0, w, h); - gl.ProjectionMatrix.setOrtho(0, w, 0, h, -1, 1); - } - - /** - * bind to default screen render buffer. - * do some coordinates transform work - * https://blog.csdn.net/liji_digital/article/details/79370841 - * https://blog.csdn.net/lyx2007825/article/details/8792475 - */ - /*class member*/ void Canvas::unbind() - { - if (isBinded(DEFAULT_CANVAS)) return; - current = DEFAULT_CANVAS; - /* get window size as viewport */ - Window* wnd = Window::get(); - int w = wnd->getW(); - int h = wnd->getH(); - - glBindFramebuffer(GL_FRAMEBUFFER, DEFAULT_CANVAS->fbo); - - /* set viewport on screen */ - glViewport(0, 0, w, h); - - gl.ProjectionMatrix.setOrtho(0, w, h, 0, -1, 1); - - } - - } // namespace graphics -} // namespace jin - -#endif // LIBJIN_MODULES_RENDER
\ No newline at end of file |