-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
#ifndef MSP_GL_PIXELFORMAT_H_
#define MSP_GL_PIXELFORMAT_H_
-#include <GL/gl.h>
+#include <msp/graphics/pixelformat.h>
+#include <msp/strings/lexicalcast.h>
+#include "gl.h"
+#include <msp/gl/extensions/arb_depth_buffer_float.h>
+#include <msp/gl/extensions/arb_depth_texture.h>
+#include <msp/gl/extensions/arb_texture_float.h>
+#include <msp/gl/extensions/arb_texture_rg.h>
+#include <msp/gl/extensions/ext_bgra.h>
+#include <msp/gl/extensions/ext_texture_srgb.h>
+#include <msp/gl/extensions/oes_required_internalformat.h>
+#include <msp/gl/extensions/oes_texture_stencil8.h>
namespace Msp {
namespace GL {
enum PixelFormat
{
- COLOR_INDEX = GL_COLOR_INDEX,
STENCIL_INDEX = GL_STENCIL_INDEX,
DEPTH_COMPONENT = GL_DEPTH_COMPONENT,
+ DEPTH_COMPONENT16 = GL_DEPTH_COMPONENT16,
+ DEPTH_COMPONENT24 = GL_DEPTH_COMPONENT24,
+ DEPTH_COMPONENT32 = GL_DEPTH_COMPONENT32,
+ DEPTH_COMPONENT32F = GL_DEPTH_COMPONENT32F,
RED = GL_RED,
- GREEN = GL_GREEN,
- BLUE = GL_BLUE,
- ALPHA = GL_ALPHA,
+ RG = GL_RG,
RGB = GL_RGB,
RGBA = GL_RGBA,
+ R8 = GL_R8,
+ R16F = GL_R16F,
+ R32F = GL_R32F,
+ RG8 = GL_RG8,
+ RG16F = GL_RG16F,
+ RG32F = GL_RG32F,
+ RGB8 = GL_RGB8,
+ RGB16F = GL_RGB16F,
+ RGB32F = GL_RGB32F,
+ RGBA8 = GL_RGBA8,
+ RGBA16F = GL_RGBA16F,
+ RGBA32F = GL_RGBA32F,
+ SRGB = GL_SRGB,
+ SRGB_ALPHA = GL_SRGB_ALPHA,
+ SRGB8 = GL_SRGB8,
+ SRGB8_ALPHA8 = GL_SRGB8_ALPHA8,
BGR = GL_BGR,
BGRA = GL_BGRA,
LUMINANCE = GL_LUMINANCE,
LUMINANCE_ALPHA = GL_LUMINANCE_ALPHA
};
+void operator>>(const LexicalConverter &, PixelFormat &);
+
+PixelFormat pixelformat_from_graphics(Graphics::PixelFormat);
+PixelFormat storage_pixelformat_from_graphics(Graphics::PixelFormat, bool = false);
+
+PixelFormat get_base_pixelformat(PixelFormat);
+PixelFormat get_unsized_pixelformat(PixelFormat);
+PixelFormat get_sized_pixelformat(PixelFormat, unsigned = 1);
+PixelFormat get_default_sized_pixelformat(PixelFormat);
+PixelFormat get_srgb_pixelformat(PixelFormat);
+unsigned get_component_count(PixelFormat);
+unsigned get_component_size(PixelFormat);
+unsigned get_pixel_size(PixelFormat);
+
+void require_pixelformat(PixelFormat);
+
} // namespace GL
} // namespace Msp