本文整理汇总了C++中Extensions3D::ensureEnabled方法的典型用法代码示例。如果您正苦于以下问题:C++ Extensions3D::ensureEnabled方法的具体用法?C++ Extensions3D::ensureEnabled怎么用?C++ Extensions3D::ensureEnabled使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Extensions3D
的用法示例。
在下文中一共展示了Extensions3D::ensureEnabled方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: USE
SharedGraphicsContext3D::SharedGraphicsContext3D(PassRefPtr<GraphicsContext3D> context, PassOwnPtr<SolidFillShader> solidFillShader, PassOwnPtr<TexShader> texShader, PassOwnPtr<BicubicShader> bicubicShader, PassOwnArrayPtr<OwnPtr<ConvolutionShader> > convolutionShaders, CreationFlags flags)
: m_context(context)
, m_bgraSupported(false)
, m_quadVertices(0)
, m_solidFillShader(solidFillShader)
, m_texShader(texShader)
, m_bicubicShader(bicubicShader)
, m_convolutionShaders(convolutionShaders)
, m_oesStandardDerivativesSupported(false)
, m_flags(flags)
#if USE(SKIA)
, m_grContext(0)
#endif
{
allContexts()->add(this);
Extensions3D* extensions = m_context->getExtensions();
m_bgraSupported = extensions->supports("GL_EXT_texture_format_BGRA8888") && extensions->supports("GL_EXT_read_format_bgra");
if (m_bgraSupported) {
extensions->ensureEnabled("GL_EXT_texture_format_BGRA8888");
extensions->ensureEnabled("GL_EXT_read_format_bgra");
}
m_oesStandardDerivativesSupported = extensions->supports("GL_OES_standard_derivatives");
if (m_oesStandardDerivativesSupported)
extensions->ensureEnabled("GL_OES_standard_derivatives");
}
示例2: createMultisampleBuffer
bool FECustomFilter::createMultisampleBuffer()
{
ASSERT(!m_triedMultisampleBuffer);
m_triedMultisampleBuffer = true;
Extensions3D* extensions = m_context->getExtensions();
if (!extensions
|| !extensions->maySupportMultisampling()
|| !extensions->supports("GL_ANGLE_framebuffer_multisample")
|| !extensions->supports("GL_ANGLE_framebuffer_blit")
|| !extensions->supports("GL_OES_rgb8_rgba8"))
return false;
extensions->ensureEnabled("GL_ANGLE_framebuffer_blit");
extensions->ensureEnabled("GL_ANGLE_framebuffer_multisample");
extensions->ensureEnabled("GL_OES_rgb8_rgba8");
if (!m_multisampleFrameBuffer)
m_multisampleFrameBuffer = m_context->createFramebuffer();
if (!m_multisampleRenderBuffer)
m_multisampleRenderBuffer = m_context->createRenderbuffer();
if (!m_multisampleDepthBuffer)
m_multisampleDepthBuffer = m_context->createRenderbuffer();
return true;
}
示例3: getExtensions
void GraphicsContext3D::validateAttributes()
{
Extensions3D* extensions = getExtensions();
if (m_attrs.stencil) {
const char* packedDepthStencilExtension = isGLES2Compliant() ? "GL_OES_packed_depth_stencil" : "GL_EXT_packed_depth_stencil";
if (extensions->supports(packedDepthStencilExtension)) {
extensions->ensureEnabled(packedDepthStencilExtension);
// Force depth if stencil is true.
m_attrs.depth = true;
} else
m_attrs.stencil = false;
}
if (m_attrs.antialias) {
bool isValidVendor = true;
// Currently in Mac we only turn on antialias if vendor is NVIDIA,
// or if ATI and on 10.7.2 and above.
const char* vendor = reinterpret_cast<const char*>(::glGetString(GL_VENDOR));
if (!std::strstr(vendor, "NVIDIA") && !(std::strstr(vendor, "ATI") && systemAllowsMultisamplingOnATICards()))
isValidVendor = false;
if (!isValidVendor || !extensions->supports("GL_ANGLE_framebuffer_multisample") || isGLES2Compliant())
m_attrs.antialias = false;
else
extensions->ensureEnabled("GL_ANGLE_framebuffer_multisample");
}
}
示例4: adoptRef
PassRefPtr<DrawingBuffer> DrawingBuffer::create(GraphicsContext3D* context, const IntSize& size)
{
Extensions3D* extensions = context->getExtensions();
bool multisampleSupported = extensions->supports("GL_ANGLE_framebuffer_blit") && extensions->supports("GL_ANGLE_framebuffer_multisample") && extensions->supports("GL_OES_rgb8_rgba8");
if (multisampleSupported) {
extensions->ensureEnabled("GL_ANGLE_framebuffer_blit");
extensions->ensureEnabled("GL_ANGLE_framebuffer_multisample");
extensions->ensureEnabled("GL_OES_rgb8_rgba8");
}
bool packedDepthStencilSupported = extensions->supports("GL_OES_packed_depth_stencil");
if (packedDepthStencilSupported)
extensions->ensureEnabled("GL_OES_packed_depth_stencil");
RefPtr<DrawingBuffer> drawingBuffer = adoptRef(new DrawingBuffer(context, size, multisampleSupported, packedDepthStencilSupported));
return (drawingBuffer->m_context) ? drawingBuffer.release() : 0;
}
示例5: createFrameBuffer
bool LayerTextureUpdaterSkPicture::createFrameBuffer()
{
ASSERT(!m_fbo);
ASSERT(!m_bufferSize.isEmpty());
// SKIA only needs color and stencil buffers, not depth buffer.
// But it is very uncommon for cards to support color + stencil FBO config.
// The most common config is color + packed-depth-stencil.
// Instead of iterating through all possible FBO configs, we only try the
// most common one here.
// FIXME: Delegate the task of creating frame-buffer to SKIA.
// It has all necessary code to iterate through all possible configs
// and choose the one most suitable for its purposes.
Extensions3D* extensions = context()->getExtensions();
if (!extensions->supports("GL_OES_packed_depth_stencil"))
return false;
extensions->ensureEnabled("GL_OES_packed_depth_stencil");
// Create and bind a frame-buffer-object.
m_fbo = context()->createFramebuffer();
if (!m_fbo)
return false;
context()->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_fbo);
// We just need to create a stencil buffer for FBO.
// The color buffer (texture) will be provided by tiles.
// SKIA does not need depth buffer.
m_depthStencilBuffer = context()->createRenderbuffer();
if (!m_depthStencilBuffer) {
deleteFrameBuffer();
return false;
}
context()->bindRenderbuffer(GraphicsContext3D::RENDERBUFFER, m_depthStencilBuffer);
context()->renderbufferStorage(GraphicsContext3D::RENDERBUFFER, Extensions3D::DEPTH24_STENCIL8, m_bufferSize.width(), m_bufferSize.height());
context()->framebufferRenderbuffer(GraphicsContext3D::FRAMEBUFFER, GraphicsContext3D::DEPTH_ATTACHMENT, GraphicsContext3D::RENDERBUFFER, m_depthStencilBuffer);
context()->framebufferRenderbuffer(GraphicsContext3D::FRAMEBUFFER, GraphicsContext3D::STENCIL_ATTACHMENT, GraphicsContext3D::RENDERBUFFER, m_depthStencilBuffer);
// Create a skia gpu canvas.
GrContext* skiaContext = m_context->grContext();
GrPlatformSurfaceDesc targetDesc;
targetDesc.reset();
targetDesc.fSurfaceType = kRenderTarget_GrPlatformSurfaceType;
targetDesc.fRenderTargetFlags = kNone_GrPlatformRenderTargetFlagBit;
targetDesc.fWidth = m_bufferSize.width();
targetDesc.fHeight = m_bufferSize.height();
targetDesc.fConfig = kRGBA_8888_GrPixelConfig;
targetDesc.fStencilBits = 8;
targetDesc.fPlatformRenderTarget = m_fbo;
SkAutoTUnref<GrRenderTarget> target(static_cast<GrRenderTarget*>(skiaContext->createPlatformSurface(targetDesc)));
SkAutoTUnref<SkDevice> device(new SkGpuDevice(skiaContext, target.get()));
m_canvas = adoptPtr(new SkCanvas(device.get()));
context()->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, 0);
return true;
}
示例6: PLATFORM
PassRefPtr<DrawingBuffer> DrawingBuffer::create(GraphicsContext3D* context, const IntSize& size, PreserveDrawingBuffer preserve, AlphaRequirement alpha)
{
#if PLATFORM(JS)
webkitTrace();
#endif
Extensions3D* extensions = context->getExtensions();
bool multisampleSupported = extensions->maySupportMultisampling()
&& extensions->supports("GL_ANGLE_framebuffer_blit")
&& extensions->supports("GL_ANGLE_framebuffer_multisample")
&& extensions->supports("GL_OES_rgb8_rgba8");
if (multisampleSupported) {
extensions->ensureEnabled("GL_ANGLE_framebuffer_blit");
extensions->ensureEnabled("GL_ANGLE_framebuffer_multisample");
extensions->ensureEnabled("GL_OES_rgb8_rgba8");
}
bool packedDepthStencilSupported = extensions->supports("GL_OES_packed_depth_stencil");
if (packedDepthStencilSupported)
extensions->ensureEnabled("GL_OES_packed_depth_stencil");
RefPtr<DrawingBuffer> drawingBuffer = adoptRef(new DrawingBuffer(context, size, multisampleSupported, packedDepthStencilSupported, preserve, alpha));
return (drawingBuffer->m_context) ? drawingBuffer.release() : 0;
}