X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frenderbuffer.h;h=0ccf49675897c6b9864da27adb708eed45c458e8;hb=0ab875bdc9fbf84ecfce883b188410bb45882447;hp=7f9d7a422a0f5f6378075f2a0ed34622ad06f585;hpb=7f888de83aa5398fafaa7661547ee80395377b5c;p=libs%2Fgl.git diff --git a/source/renderbuffer.h b/source/renderbuffer.h index 7f9d7a42..0ccf4967 100644 --- a/source/renderbuffer.h +++ b/source/renderbuffer.h @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2007, 2009-2011 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #ifndef MSP_GL_RENDERBUFFER_H_ #define MSP_GL_RENDERBUFFER_H_ @@ -17,9 +10,11 @@ namespace GL { /** A Renderbuffer contains a single renderable image. It can be attached to a Framebuffer to provide a logical buffer that is required to render the scene -correctly but that is not needed as a texture later. +correctly but that is not needed as a texture later. Renderbuffers also +provide a capability for multisampling, which is not available in textures. -Requires the GL_EXT_framebuffer_object extension. +Requires the GL_EXT_framebuffer_object extension. Multisample renderbuffers +additionally require the GL_EXT_framebuffer_multisample extension. */ class Renderbuffer: public Bindable { @@ -36,8 +31,18 @@ public: unsigned get_width() const { return width; } unsigned get_height() const { return height; } - void storage(PixelFormat fmt, unsigned width, unsigned height); - void storage_multisample(unsigned, PixelFormat fmt, unsigned, unsigned); +private: + static PixelFormat normalize_format(PixelFormat); + +public: + /** Allocates storage for the renderbuffer. */ + void storage(PixelFormat fmt, unsigned wd, unsigned ht); + + /** Allocates multisample storage for the renderbuffer. All attachments in + a framebuffer must have the same number of samples. To transfer the + contents to a texture for furter processing, use the framebuffer blit + functions.*/ + void storage_multisample(unsigned samples, PixelFormat fmt, unsigned wd, unsigned ht); void bind() const;