void FramebufferGLTest::attachRenderbufferMultisample() { #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported<Extensions::GL::ARB::framebuffer_object>()) CORRADE_SKIP(Extensions::GL::ARB::framebuffer_object::string() + std::string(" is not available.")); #elif defined(MAGNUM_TARGET_GLES2) if(!Context::current()->isExtensionSupported<Extensions::GL::ANGLE::framebuffer_multisample>() && !Context::current()->isExtensionSupported<Extensions::GL::NV::framebuffer_multisample>()) CORRADE_SKIP("Required extension is not available."); #endif Renderbuffer color; #ifndef MAGNUM_TARGET_GLES2 color.setStorageMultisample(Renderbuffer::maxSamples(), RenderbufferFormat::RGBA8, Vector2i(128)); #else color.setStorageMultisample(Renderbuffer::maxSamples(), RenderbufferFormat::RGBA4, Vector2i(128)); #endif #ifdef MAGNUM_TARGET_GLES2 MAGNUM_ASSERT_EXTENSION_SUPPORTED(Extensions::GL::OES::packed_depth_stencil); #endif Renderbuffer depthStencil; depthStencil.setStorageMultisample(Renderbuffer::maxSamples(), RenderbufferFormat::Depth24Stencil8, Vector2i(128)); Framebuffer framebuffer({{}, Vector2i(128)}); framebuffer.attachRenderbuffer(Framebuffer::ColorAttachment(0), color) #ifndef MAGNUM_TARGET_GLES2 .attachRenderbuffer(Framebuffer::BufferAttachment::DepthStencil, depthStencil); #else .attachRenderbuffer(Framebuffer::BufferAttachment::Depth, depthStencil)
void GL_APIENTRY RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { EVENT("(GLenum target = 0x%X, GLsizei samples = %d, GLenum internalformat = 0x%X, GLsizei width = %d, GLsizei height = %d)", target, samples, internalformat, width, height); Context *context = GetValidGlobalContext(); if (context) { if (!ValidateRenderbufferStorageParametersANGLE(context, target, samples, internalformat, width, height)) { return; } Renderbuffer *renderbuffer = context->getState().getCurrentRenderbuffer(); Error error = renderbuffer->setStorageMultisample(samples, internalformat, width, height); if (error.isError()) { context->recordError(error); return; } } }