Browse Source

Support for ES2 extension NV_framebuffer_blit.

pull/278/head
Vladimír Vondruš 13 years ago
parent
commit
91531d5f53
  1. 20
      src/AbstractFramebuffer.h
  2. 1
      src/Context.cpp
  3. 1
      src/Extensions.h

20
src/AbstractFramebuffer.h

@ -82,7 +82,8 @@ class MAGNUM_EXPORT AbstractFramebuffer {
*
* @see BlitMask
* @requires_gl30 %Extension @extension{EXT,framebuffer_object}
* @requires_gles30 %Extension @es_extension{ANGLE,framebuffer_blit}
* @requires_gles30 %Extension @es_extension{ANGLE,framebuffer_blit} or
* @es_extension{NV,framebuffer_blit}
*/
enum class Blit: GLbitfield {
ColorBuffer = GL_COLOR_BUFFER_BIT, /**< Color buffer */
@ -95,7 +96,8 @@ class MAGNUM_EXPORT AbstractFramebuffer {
*
* @see blit()
* @requires_gl30 %Extension @extension{EXT,framebuffer_object}
* @requires_gles30 %Extension @es_extension{ANGLE,framebuffer_blit}
* @requires_gles30 %Extension @es_extension{ANGLE,framebuffer_blit} or
* @es_extension{NV,framebuffer_blit}
*/
typedef Corrade::Containers::EnumSet<Blit, GLbitfield,
GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT> BlitMask;
@ -120,8 +122,8 @@ class MAGNUM_EXPORT AbstractFramebuffer {
/**
* For reading only.
* @requires_gl30 %Extension @extension{EXT,framebuffer_blit}
* @requires_gles30 %Extension @es_extension{APPLE,framebuffer_multisample}
* or @es_extension{ANGLE,framebuffer_blit}
* @requires_gles30 %Extension @es_extension{APPLE,framebuffer_multisample},
* @es_extension{ANGLE,framebuffer_blit} or @es_extension{NV,framebuffer_blit}
*/
#ifndef MAGNUM_TARGET_GLES2
Read = GL_READ_FRAMEBUFFER,
@ -132,8 +134,8 @@ class MAGNUM_EXPORT AbstractFramebuffer {
/**
* For drawing only.
* @requires_gl30 %Extension @extension{EXT,framebuffer_blit}
* @requires_gles30 %Extension @es_extension{APPLE,framebuffer_multisample}
* or @es_extension{ANGLE,framebuffer_blit}
* @requires_gles30 %Extension @es_extension{APPLE,framebuffer_multisample},
* @es_extension{ANGLE,framebuffer_blit} or @es_extension{NV,framebuffer_blit}
*/
#ifndef MAGNUM_TARGET_GLES2
Draw = GL_DRAW_FRAMEBUFFER,
@ -161,7 +163,8 @@ class MAGNUM_EXPORT AbstractFramebuffer {
* blitting operation.
* @see @fn_gl{BlitFramebuffer}
* @requires_gl30 %Extension @extension{EXT,framebuffer_blit}
* @requires_gles30 %Extension @es_extension{ANGLE,framebuffer_blit}
* @requires_gles30 %Extension @es_extension{ANGLE,framebuffer_blit} or
* @es_extension{NV,framebuffer_blit}
*/
static void blit(AbstractFramebuffer& source, AbstractFramebuffer& destination, const Rectanglei& sourceRectangle, const Rectanglei& destinationRectangle, BlitMask mask, BlitFilter filter);
@ -178,7 +181,8 @@ class MAGNUM_EXPORT AbstractFramebuffer {
* @ref BlitFilter "BlitFilter::Nearest" filtering is used by default.
* @see @fn_gl{BlitFramebuffer}
* @requires_gl30 %Extension @extension{EXT,framebuffer_blit}
* @requires_gles30 %Extension @es_extension{ANGLE,framebuffer_blit}
* @requires_gles30 %Extension @es_extension{ANGLE,framebuffer_blit} or
* @es_extension{NV,framebuffer_blit}
*/
inline static void blit(AbstractFramebuffer& source, AbstractFramebuffer& destination, const Rectanglei& rectangle, BlitMask mask) {
blit(source, destination, rectangle, rectangle, mask, BlitFilter::Nearest);

1
src/Context.cpp

@ -232,6 +232,7 @@ const std::vector<Extension>& Extension::extensions(Version version) {
_extension(GL,NV,read_buffer),
_extension(GL,NV,read_depth),
_extension(GL,NV,read_depth_stencil),
_extension(GL,NV,framebuffer_blit), // done
_extension(GL,OES,depth24),
_extension(GL,OES,element_index_uint),
_extension(GL,OES,rgb8_rgba8),

1
src/Extensions.h

@ -209,6 +209,7 @@ namespace GL {
_extension(GL,NV,read_depth, GLES200, GLES300) // #94
_extension(GL,NV,read_stencil, GLES200, None) // #94
_extension(GL,NV,read_depth_stencil, GLES200, GLES300) // #94
_extension(GL,NV,framebuffer_blit, GLES200, GLES300) // #142
} namespace OES {
_extension(GL,OES,depth24, GLES200, GLES300) // #24
_extension(GL,OES,depth32, GLES200, None) // #25

Loading…
Cancel
Save