#ifndef GRAPHICS_H
#define GRAPHICS_H
#define RENDER_PASS_NORMAL 0
#define RENDER_PASS_SHADOW_MAP 1
#define RENDER_PASS_NO TEXTURE 2
#define RENDER_PASS_SHADOW 3
extern GLuint texture[100];
extern GLuint cursor_tex;
extern GLuint cursor_tex_alpha;
extern int render_pass;
extern char tex_name[71][13];
extern int num_textures;
class Camera
{
public:
float x,y,z,h,p,r;
float x2,y2,z2,h2,p2,r2;
float xs,ys,zs,hs,ps,rs;
Matrix4x4 proj_matrix, view_matrix;
void reset();
void set (float xx, float xy, float xz, float xh, float xp, float xr);
void move (float xx, float xy, float xz, float xh, float xp, float xr);
void move2 (float xx, float xy, float xz, float xh, float xp, float xr);
void set_mode(int mode);
};
void setTransform (const float pos[3], const float R[12]);
void drawBox (const float sides[3]);
GLvoid ReSizeGLScene(GLsizei width, GLsizei height);
void set_opengl_ambient();
int draw_scene(GLvoid);
void load_textures();
void draw_cursor();
int load_texture_2(GLuint &tex,const char *filename);
extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB;
extern PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB;
extern PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB;
extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT;
extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT;
extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT;
extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT;
extern PFNGLBLENDCOLORPROC glBlendColor;
#endif