本文整理汇总了C++中Renderbuffer类的典型用法代码示例。如果您正苦于以下问题:C++ Renderbuffer类的具体用法?C++ Renderbuffer怎么用?C++ Renderbuffer使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Renderbuffer类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
// Increments refcount on surface.
// caller must Release() the returned surface
egl::Image *Framebuffer::getStencilBuffer()
{
Renderbuffer *stencilbuffer = mStencilbufferPointer;
if(stencilbuffer)
{
return stencilbuffer->getRenderTarget();
}
return nullptr;
}
示例2: getRenderTargetSerial
unsigned int Framebuffer::getRenderTargetSerial()
{
Renderbuffer *colorbuffer = mColorbufferPointer.get();
if (colorbuffer)
{
return colorbuffer->getSerial();
}
return 0;
}
示例3: CORRADE_SKIP
void SampleQueryGLTest::querySamplesPassed() {
#ifdef MAGNUM_TARGET_GLES2
if(!Context::current()->isExtensionSupported<Extensions::GL::EXT::occlusion_query_boolean>())
CORRADE_SKIP(Extensions::GL::EXT::occlusion_query_boolean::string() + std::string(" is not available."));
#endif
Renderbuffer renderbuffer;
#ifndef MAGNUM_TARGET_GLES2
renderbuffer.setStorage(RenderbufferFormat::RGBA8, Vector2i(32));
#else
renderbuffer.setStorage(RenderbufferFormat::RGBA4, Vector2i(32));
#endif
Framebuffer framebuffer({{}, Vector2i(32)});
framebuffer.attachRenderbuffer(Framebuffer::ColorAttachment(0), renderbuffer);
Buffer buffer;
constexpr Vector2 triangle[] = {{-1.0f, 1.0f}, {-1.0f, -3.0f}, {3.0f, 1.0f}};
buffer.setData(triangle, BufferUsage::StaticDraw);
Mesh mesh;
mesh.setPrimitive(MeshPrimitive::Triangles)
.setCount(3)
.addVertexBuffer(buffer, 0, AbstractShaderProgram::Attribute<0, Vector2>());
MyShader shader;
MAGNUM_VERIFY_NO_ERROR();
SampleQuery q;
#ifndef MAGNUM_TARGET_GLES
q.begin(SampleQuery::Target::SamplesPassed);
#else
q.begin(SampleQuery::Target::AnySamplesPassed);
#endif
framebuffer.bind(FramebufferTarget::ReadDraw);
mesh.draw(shader);
q.end();
const bool availableBefore = q.resultAvailable();
const UnsignedInt count = q.result<UnsignedInt>();
const bool availableAfter = q.resultAvailable();
MAGNUM_VERIFY_NO_ERROR();
CORRADE_VERIFY(!availableBefore);
CORRADE_VERIFY(availableAfter);
#ifndef MAGNUM_TARGET_GLES
CORRADE_COMPARE(count, 32*32);
#else
CORRADE_VERIFY(count > 0);
#endif
}
示例4: Renderbuffer
DefaultFramebuffer::DefaultFramebuffer(Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil)
{
mColorbufferPointer = new Renderbuffer(0, colorbuffer);
Renderbuffer *depthStencilRenderbuffer = new Renderbuffer(0, depthStencil);
mDepthbufferPointer = depthStencilRenderbuffer;
mStencilbufferPointer = depthStencilRenderbuffer;
mColorbufferType = GL_RENDERBUFFER_OES;
mDepthbufferType = (depthStencilRenderbuffer->getDepthSize() != 0) ? GL_RENDERBUFFER_OES : GL_NONE_OES;
mStencilbufferType = (depthStencilRenderbuffer->getStencilSize() != 0) ? GL_RENDERBUFFER_OES : GL_NONE_OES;
}
示例5: ASSERT
unsigned int Framebuffer::getRenderTargetSerial(unsigned int colorAttachment) const
{
ASSERT(colorAttachment < IMPLEMENTATION_MAX_DRAW_BUFFERS);
Renderbuffer *colorbuffer = mColorbufferPointers[colorAttachment].get();
if (colorbuffer)
{
return colorbuffer->getSerial();
}
return 0;
}
示例6:
DepthStencilbuffer *Framebuffer::getStencilbuffer()
{
Renderbuffer *rb = mStencilbufferPointer.get();
if (rb != NULL && rb->isStencilbuffer())
{
return static_cast<DepthStencilbuffer*>(rb->getStorage());
}
else
{
return NULL;
}
}
示例7: getStencilbuffer
bool Framebuffer::hasStencil()
{
if(mStencilbufferType != GL_NONE_OES)
{
Renderbuffer *stencilbufferObject = getStencilbuffer();
if(stencilbufferObject)
{
return stencilbufferObject->getStencilSize() > 0;
}
}
return false;
}
示例8: ResizeLightMask
void ResizeLightMask(GLuint width, GLuint height)
{
Texture::Active(light_tex_unit);
Texture::Target tex_tgt = Texture::Target::Rectangle;
light_mask.Bind(tex_tgt);
Texture::Image2D(
tex_tgt,
0,
PixelDataInternalFormat::Red,
width, height,
0,
PixelDataFormat::Red,
PixelDataType::UnsignedByte,
nullptr
);
Renderbuffer::Target rbo_tgt = Renderbuffer::Target::Renderbuffer;
light_rbo.Bind(rbo_tgt);
Renderbuffer::Storage(
rbo_tgt,
PixelDataInternalFormat::DepthComponent,
width,
height
);
}
示例9: Framebuffer
DefaultFramebuffer::DefaultFramebuffer(rx::RenderbufferImpl *colorbuffer, rx::RenderbufferImpl *depthStencil)
: Framebuffer(0)
{
Renderbuffer *colorRenderbuffer = new Renderbuffer(colorbuffer, 0);
mColorbuffers[0] = new RenderbufferAttachment(GL_BACK, colorRenderbuffer);
Renderbuffer *depthStencilBuffer = new Renderbuffer(depthStencil, 0);
// Make a new attachment objects to ensure we do not double-delete
// See angle issue 686
mDepthbuffer = (depthStencilBuffer->getDepthSize() != 0 ? new RenderbufferAttachment(GL_DEPTH_ATTACHMENT, depthStencilBuffer) : NULL);
mStencilbuffer = (depthStencilBuffer->getStencilSize() != 0 ? new RenderbufferAttachment(GL_STENCIL_ATTACHMENT, depthStencilBuffer) : NULL);
mDrawBufferStates[0] = GL_BACK;
mReadBufferState = GL_BACK;
}
示例10: Framebuffer
DefaultFramebuffer::DefaultFramebuffer(rx::Renderer *renderer, Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil)
: Framebuffer(renderer)
{
mColorbufferPointers[0].set(new Renderbuffer(mRenderer, 0, colorbuffer));
Renderbuffer *depthStencilRenderbuffer = new Renderbuffer(mRenderer, 0, depthStencil);
mDepthbufferPointer.set(depthStencilRenderbuffer);
mStencilbufferPointer.set(depthStencilRenderbuffer);
mColorbufferTypes[0] = GL_RENDERBUFFER;
mDepthbufferType = (depthStencilRenderbuffer->getDepthSize() != 0) ? GL_RENDERBUFFER : GL_NONE;
mStencilbufferType = (depthStencilRenderbuffer->getStencilSize() != 0) ? GL_RENDERBUFFER : GL_NONE;
mDrawBufferStates[0] = GL_BACK;
mReadBufferState = GL_BACK;
}
示例11: CORRADE_SKIP
void FramebufferGLTest::multipleColorOutputs() {
#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::NV::draw_buffers>())
CORRADE_SKIP(Extensions::GL::NV::draw_buffers::string() + std::string(" is not available."));
#endif
Texture2D color1;
#ifndef MAGNUM_TARGET_GLES2
color1.setStorage(1, TextureFormat::RGBA8, Vector2i(128));
#else
color1.setStorage(1, TextureFormat::RGBA, Vector2i(128));
#endif
Texture2D color2;
#ifndef MAGNUM_TARGET_GLES2
color2.setStorage(1, TextureFormat::RGBA8, Vector2i(128));
#else
color2.setStorage(1, TextureFormat::RGBA, Vector2i(128));
#endif
Renderbuffer depth;
depth.setStorage(RenderbufferFormat::DepthComponent16, Vector2i(128));
Framebuffer framebuffer({{}, Vector2i(128)});
framebuffer.attachTexture(Framebuffer::ColorAttachment(0), color1, 0)
.attachTexture(Framebuffer::ColorAttachment(1), color2, 0)
.attachRenderbuffer(Framebuffer::BufferAttachment::Depth, depth)
.mapForDraw({{0, Framebuffer::ColorAttachment(1)},
{1, Framebuffer::ColorAttachment(0)}});
#ifdef MAGNUM_TARGET_GLES2
if(Context::current()->isExtensionSupported<Extensions::GL::NV::read_buffer>())
#endif
{
#ifdef MAGNUM_TARGET_GLES2
Debug() << "Using" << Extensions::GL::NV::read_buffer::string();
#endif
framebuffer.mapForRead(Framebuffer::ColorAttachment(1));
}
MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(framebuffer.checkStatus(FramebufferTarget::ReadDraw), Framebuffer::Status::Complete);
}
示例12: glGetIntegerv
void Framebuffer::AttachRenderbuffer(GLenum attachment, const Renderbuffer &rb)
{
GLint bind_draw = 0, bind_read = 0;
glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &bind_draw);
glGetIntegerv(GL_READ_FRAMEBUFFER_BINDING, &bind_read);
Bind();
glFramebufferRenderbuffer(target, attachment, GL_RENDERBUFFER, rb.GetId());
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, bind_draw);
glBindFramebuffer(GL_READ_FRAMEBUFFER, bind_read);
}
示例13: getImplementationColorReadType
GLenum Framebuffer::getImplementationColorReadType()
{
Renderbuffer *colorbuffer = mColorbufferPointer;
if(colorbuffer)
{
switch(colorbuffer->getInternalFormat())
{
case sw::FORMAT_A8R8G8B8: return GL_UNSIGNED_BYTE;
case sw::FORMAT_A8B8G8R8: return GL_UNSIGNED_BYTE;
case sw::FORMAT_X8R8G8B8: return GL_UNSIGNED_BYTE;
case sw::FORMAT_X8B8G8R8: return GL_UNSIGNED_BYTE;
case sw::FORMAT_A1R5G5B5: return GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT;
case sw::FORMAT_R5G6B5: return GL_UNSIGNED_SHORT_5_6_5;
default:
UNREACHABLE(colorbuffer->getInternalFormat());
}
}
return GL_UNSIGNED_BYTE;
}
示例14: glBindFramebuffer
void Framebuffer::attachRenderbuffer(const Renderbuffer &renderbuffer, Attachment attachment)
{
GLuint bound = (_boundTo == ReadFramebuffer) ? _boundRead : _boundDraw;
if (bound != _id)
glBindFramebuffer(_boundTo, _id);
glFramebufferRenderbuffer(_boundTo, attachment, GL_RENDERBUFFER, renderbuffer.getId());
if (bound != _id)
glBindFramebuffer(_boundTo, bound);
}
示例15: assert
void Framebuffer::set_color_attachment(unsigned index, Renderbuffer &renderbuffer)
{
GL_ERROR_GUARD;
assert(index < 16); // momentalne je podporovanych len 16 attachmentov
// dobre by bolo zistit max pocet cez glGet
// assert(texture.type() == TextureType::TEXTURE_2D);
my_vs.bind_write_framebuffer(*this, false);
GLenum attachment = GL_COLOR_ATTACHMENT0 + index;
glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, attachment, GL_RENDERBUFFER,
renderbuffer.gl_renderbuffer());
my_color_attachments |= 1 << index;
}