Browse Source

AbstractFramebuffer: Use correct target for GLES

OpenGL ES without GL_APPLE_framebuffer_multisample doesn't
support multiple draw or read bindings, so we need to use
GL_FRAMEBUFFER for that.

It seems as though the Magnum convention is to use use
FramebufferTarget::Draw for read-draw bindings, so Read and Draw
have been aliased to GL_FRAMEBUFFER in this case.
pull/134/head
Sam Spilsbury 10 years ago
parent
commit
beebbc762c
  1. 10
      src/Magnum/AbstractFramebuffer.cpp
  2. 12
      src/Magnum/AbstractFramebuffer.h

10
src/Magnum/AbstractFramebuffer.cpp

@ -122,7 +122,7 @@ void AbstractFramebuffer::bindImplementationSingle(FramebufferTarget) {
/* Binding the framebuffer finally creates it */
_flags |= ObjectFlag::Created;
glBindFramebuffer(GL_FRAMEBUFFER, _id);
glBindFramebuffer(GLenum(FramebufferTarget::Draw), _id);
}
#endif
@ -164,10 +164,10 @@ FramebufferTarget AbstractFramebuffer::bindImplementationSingle() {
/* Binding the framebuffer finally creates it */
_flags |= ObjectFlag::Created;
glBindFramebuffer(GL_FRAMEBUFFER, _id);
glBindFramebuffer(GLenum(FramebufferTarget::Draw), _id);
}
return FramebufferTarget{};
return FramebufferTarget::Draw;
}
#endif
@ -367,8 +367,8 @@ GLenum AbstractFramebuffer::checkStatusImplementationDefault(const FramebufferTa
#ifdef MAGNUM_TARGET_GLES2
GLenum AbstractFramebuffer::checkStatusImplementationSingle(FramebufferTarget) {
bindInternal(FramebufferTarget{});
return glCheckFramebufferStatus(GL_FRAMEBUFFER);
bindInternal(FramebufferTarget::Draw);
return glCheckFramebufferStatus(GLenum(FramebufferTarget::Draw));
}
#endif

12
src/Magnum/AbstractFramebuffer.h

@ -117,19 +117,19 @@ enum class FramebufferTarget: GLenum {
/** Frambebuffer reading target */
#ifndef MAGNUM_TARGET_GLES2
Read = GL_READ_FRAMEBUFFER,
#elif !defined(MAGNUM_TARGET_WEBGL)
#elif defined(CORRADE_TARGET_APPLE)
Read = GL_READ_FRAMEBUFFER_APPLE,
#else
Read,
Read = GL_FRAMEBUFFER,
#endif
/** Framebuffer drawing target */
#ifndef MAGNUM_TARGET_GLES2
Draw = GL_DRAW_FRAMEBUFFER,
#elif !defined(MAGNUM_TARGET_WEBGL)
#elif defined(CORRADE_TARGET_APPLE)
Draw = GL_DRAW_FRAMEBUFFER_APPLE,
#else
Draw,
Draw = GL_FRAMEBUFFER,
#endif
#ifdef MAGNUM_BUILD_DEPRECATED
@ -140,10 +140,10 @@ enum class FramebufferTarget: GLenum {
ReadDraw CORRADE_DEPRECATED_ENUM("use FramebufferTarget::Draw instead") =
#ifndef MAGNUM_TARGET_GLES2
GL_DRAW_FRAMEBUFFER
#elif !defined(MAGNUM_TARGET_WEBGL)
#elif defined(MAGNUM_TARGET_APPLE)
GL_DRAW_FRAMEBUFFER_APPLE
#else
1
GL_FRAMEBUFFER
#endif
#endif
};

Loading…
Cancel
Save