1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-04 10:03:36 +00:00

Add the iOS framebuffer binder from @braindx

This commit is contained in:
Joe Mattiello 2018-03-30 08:23:55 -04:00 committed by Sergey Lipskiy
parent c0ad5b8f26
commit ff904fc51e

View File

@ -125,7 +125,32 @@ namespace opengl {
Bind m_bind;
};
typedef CachedBind<decltype(GET_GL_FUNCTION(glBindFramebuffer))> CachedBindFramebuffer;
class CachedBindFramebuffer : public Cached2<graphics::Parameter, graphics::ObjectHandle>
{
public:
CachedBindFramebuffer(decltype(GET_GL_FUNCTION(glBindFramebuffer)) _bind) : m_bind(_bind) {}
void bind(graphics::Parameter _target, graphics::ObjectHandle _name) {
#ifdef OS_IOS
if (m_defaultFramebuffer == graphics::ObjectHandle::null) {
GLint defaultFramebuffer;
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &defaultFramebuffer);
m_defaultFramebuffer = graphics::ObjectHandle(defaultFramebuffer);
}
if (_name == graphics::ObjectHandle::null) {
_name = m_defaultFramebuffer;
}
#endif
if (update(_target, _name))
m_bind(GLenum(_target), GLuint(_name));
}
private:
decltype(GET_GL_FUNCTION(glBindFramebuffer)) m_bind;
#ifdef OS_IOS
graphics::ObjectHandle m_defaultFramebuffer;
#endif
};
typedef CachedBind<decltype(GET_GL_FUNCTION(glBindRenderbuffer))> CachedBindRenderbuffer;