2013-06-23 07:49:34 +00:00
# ifndef R_RENDER
# define R_RENDER
2013-06-26 23:01:00 +00:00
# include "basictypes.h"
2013-06-23 07:49:34 +00:00
enum RenderFlags
{
// [BB] Added texture compression flags.
2014-05-11 11:27:51 +00:00
RFL_TEXTURE_COMPRESSION = 1 ,
RFL_TEXTURE_COMPRESSION_S3TC = 2 ,
2013-06-23 07:49:34 +00:00
2014-07-15 00:48:59 +00:00
RFL_SEPARATE_SHADER_OBJECTS = 4 , // we need this extension for glProgramUniform. On hardware not supporting it we need some rather clumsy workarounds
RFL_BUFFER_STORAGE = 8 , // allows persistently mapped buffers, which are the only efficient way to actually use a dynamic vertex buffer. If this isn't present, a workaround with uniform arrays is used.
RFL_SHADER_STORAGE_BUFFER = 16 , // to be used later for a parameter buffer
RFL_BASEINDEX = 32 , // currently unused
2014-07-17 00:37:18 +00:00
RFL_COREPROFILE = 64 ,
2014-07-27 11:46:35 +00:00
RFL_NOBUFFER = 128 , // the static buffer makes no sense on GL 3.x AMD and Intel hardware, as long as compatibility mode is on
2013-06-23 07:49:34 +00:00
} ;
enum TexMode
{
2014-05-11 15:56:38 +00:00
TM_MODULATE = 0 , // (r, g, b, a)
TM_MASK = 1 , // (1, 1, 1, a)
TM_OPAQUE = 2 , // (r, g, b, 1)
TM_INVERSE = 3 , // (1-r, 1-g, 1-b, a)
2013-06-23 07:49:34 +00:00
} ;
struct RenderContext
{
unsigned int flags ;
unsigned int maxuniforms ;
2014-07-30 21:13:16 +00:00
unsigned int maxuniformblock ;
2014-05-10 19:47:07 +00:00
float version ;
2014-05-11 11:27:51 +00:00
float glslversion ;
2013-06-23 07:49:34 +00:00
int max_texturesize ;
char * vendorstring ;
int MaxLights ( ) const
{
return maxuniforms > = 2048 ? 128 : 64 ;
}
} ;
2013-09-03 16:29:39 +00:00
extern RenderContext gl ;
2013-06-23 07:49:34 +00:00
# endif