void MultisampleTextureGLTest::bindImage2D() { #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported<Extensions::GL::ARB::texture_multisample>()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not supported.")); if(!Context::current().isExtensionSupported<Extensions::GL::ARB::shader_image_load_store>()) CORRADE_SKIP(Extensions::GL::ARB::shader_image_load_store::string() + std::string(" is not supported.")); #else if(!Context::current().isExtensionSupported<Extensions::GL::OES::texture_storage_multisample_2d_array>()) CORRADE_SKIP(Extensions::GL::OES::texture_storage_multisample_2d_array::string() + std::string(" is not supported.")); if(!Context::current().isVersionSupported(Version::GLES310)) CORRADE_SKIP("OpenGL ES 3.1 is not supported."); #endif MultisampleTexture2D texture; texture.setStorage(4, TextureFormat::RGBA8, Vector2i{32}) .bindImage(2, ImageAccess::ReadWrite, ImageFormat::RGBA8); MAGNUM_VERIFY_NO_ERROR(); AbstractTexture::unbindImage(2); MAGNUM_VERIFY_NO_ERROR(); #ifndef MAGNUM_TARGET_GLES AbstractTexture::bindImages(1, {&texture, nullptr, &texture}); MAGNUM_VERIFY_NO_ERROR(); AbstractTexture::unbindImages(1, 3); MAGNUM_VERIFY_NO_ERROR(); #endif }
void MultisampleTextureGLTest::invalidateSubImage2D() { #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported<Extensions::GL::ARB::texture_multisample>()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not supported.")); #else if(!Context::current()->isVersionSupported(Version::GLES310)) CORRADE_SKIP("OpenGL ES 3.1 is not supported."); #endif MultisampleTexture2D texture; texture.setStorage(4, TextureFormat::RGBA8, {16, 16}); texture.invalidateSubImage({3, 4}, {5, 6}); MAGNUM_VERIFY_NO_ERROR(); }
void FramebufferGLTest::attachTexture2DMultisample() { #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.")); if(!Context::current()->isExtensionSupported<Extensions::GL::ARB::texture_multisample>()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not available.")); #else if(!Context::current()->isVersionSupported(Version::GLES310)) CORRADE_SKIP("OpenGL ES 3.1 is not supported."); #endif MultisampleTexture2D color; color.setStorage(4, TextureFormat::RGBA8, {128, 128}); MultisampleTexture2D depthStencil; depthStencil.setStorage(4, TextureFormat::Depth24Stencil8, {128, 128}); Framebuffer framebuffer({{}, Vector2i(128)}); framebuffer.attachTexture(Framebuffer::ColorAttachment(0), color) .attachTexture(Framebuffer::BufferAttachment::DepthStencil, depthStencil); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(framebuffer.checkStatus(FramebufferTarget::ReadDraw), Framebuffer::Status::Complete); }
void MultisampleTextureGLTest::storage2D() { #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported<Extensions::GL::ARB::texture_multisample>()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not supported.")); #else if(!Context::current().isVersionSupported(Version::GLES310)) CORRADE_SKIP("OpenGL ES 3.1 is not supported."); #endif MultisampleTexture2D texture; texture.setStorage(4, TextureFormat::RGBA8, {16, 16}); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(texture.imageSize(), Vector2i(16, 16)); MAGNUM_VERIFY_NO_ERROR(); }