diff options
author | Alex Zolotarev <deathbaba@gmail.com> | 2010-12-05 19:24:16 +0300 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-22 22:33:57 +0300 |
commit | d6e12b7ce4bcbf0ccd1c07eb25de143422913c34 (patch) | |
tree | a7e910c330ce4da9b4f2d8be76067adece2561c4 /iphone/Maps/Classes/RenderBuffer.mm |
One Month In Minsk. Made in Belarus.
Diffstat (limited to 'iphone/Maps/Classes/RenderBuffer.mm')
-rw-r--r-- | iphone/Maps/Classes/RenderBuffer.mm | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/iphone/Maps/Classes/RenderBuffer.mm b/iphone/Maps/Classes/RenderBuffer.mm new file mode 100644 index 0000000000..d9ded57e8f --- /dev/null +++ b/iphone/Maps/Classes/RenderBuffer.mm @@ -0,0 +1,66 @@ +/* + * RenderBuffer.mm + * Maps + * + * Created by Siarhei Rachytski on 8/15/10. + * Copyright 2010 OMIM. All rights reserved. + * + */ + +#import "RenderBuffer.hpp" +#import "../../../yg/internal/opengl.hpp" +#include "../../../yg/utils.hpp" + +namespace iphone +{ + RenderBuffer::RenderBuffer(shared_ptr<RenderContext> renderContext, CAEAGLLayer * layer) : m_renderContext(renderContext) + { + OGLCHECK(glGenRenderbuffersOES(1, &m_id)); + makeCurrent(); + + [m_renderContext->getEAGLContext() renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:layer]; + + OGLCHECK(glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &m_width)); + OGLCHECK(glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &m_height)); + } + + void RenderBuffer::makeCurrent() + { + OGLCHECK(glBindRenderbufferOES(GL_RENDERBUFFER_OES, m_id)); + } + + RenderBuffer::~RenderBuffer() + { + OGLCHECK(glDeleteRenderbuffersOES(1, &m_id)); + } + + unsigned int RenderBuffer::id() + { + return m_id; + } + + void RenderBuffer::present() + { + makeCurrent(); + [m_renderContext->getEAGLContext() presentRenderbuffer:GL_RENDERBUFFER_OES]; + } + + unsigned RenderBuffer::width() const + { + return m_width; + } + + unsigned RenderBuffer::height() const + { + return m_height; + } + + void RenderBuffer::attachToFrameBuffer() + { + OGLCHECK(glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, + GL_COLOR_ATTACHMENT0_OES, + GL_RENDERBUFFER_OES, + m_id)); + yg::gl::utils::setupCoordinates(width(), height(), true); + } +}
\ No newline at end of file |