#ifndef MSP_GL_FRAMEFORMAT_H_
#define MSP_GL_FRAMEFORMAT_H_
-#include <msp/core/inttypes.h>
+#include <cstdint>
#include "pixelformat.h"
namespace Msp {
Describes a single attachment of a framebuffer. The values are bitfields laid
as follows:
-nnnn nn__ fsss _ccc
- │ │ │ └╴Number of components
- │ │ └─────╴Size of one component
- │ └────────╴Floating-point flag
+nnnn nn_f _sss _ccc
+ │ │ │ └╴Number of components
+ │ │ └─────╴Size of one component
+ │ └──────────╴Floating-point flag
└────────────╴Attachment index
This information is presented for internal documentation purposes only; it is
inadvisable for programs to rely on it.
*/
-enum FrameAttachment
+enum FrameAttachment: std::uint16_t
{
COLOR_ATTACHMENT = 0x0014,
- DEPTH_ATTACHMENT = 0xF8C1,
+ DEPTH_ATTACHMENT = 0xF941,
STENCIL_ATTACHMENT = 0xFC11
};
private:
enum { MAX_ATTACHMENTS = 7 };
- UInt8 count;
- UInt8 samples;
- UInt16 attachments[MAX_ATTACHMENTS];
+ std::uint8_t count = 0;
+ std::uint8_t samples = 0;
+ FrameAttachment attachments[MAX_ATTACHMENTS];
public:
- FrameFormat();
+ FrameFormat() = default;
FrameFormat(FrameAttachment);
FrameFormat operator,(FrameAttachment) const;
unsigned size() const { return count; }
bool empty() const { return !count; }
- const UInt16 *begin() const { return attachments; }
- const UInt16 *end() const { return attachments+count; }
+ const FrameAttachment *begin() const { return attachments; }
+ const FrameAttachment *end() const { return attachments+count; }
int index(FrameAttachment) const;
};
inline FrameAttachment operator,(FrameAttachment fa, unsigned i)
{ return make_indexed_attachment(fa, i); }
-inline unsigned get_attach_point(UInt16 fa)
+inline unsigned get_attach_point(FrameAttachment fa)
{ return fa>>10; }
-PixelFormat get_attachment_pixelformat(UInt16);
-
-GLenum get_gl_attachment(FrameAttachment);
+PixelFormat get_attachment_pixelformat(FrameAttachment);
} // namespace GL
} // namespace Msp
+#include "frameformat_backend.h"
+
#endif