#ifndef MODULEGLSL
#define MODULEGLSL

#define GL_GLEXT_PROTOTYPES

#include <GL/glut.h>
#include <GL/glu.h>
#include <GL/gl.h>
#include <GL/glext.h>

typedef enum {
  GLSL_FLOAT = 1,
  GLSL_INT = 2
} GLSL_type;

typedef struct uniform_info {
  const char *name;          /**< Le nom de la variable uniforme. */
  GLuint size;               /**< Le nombre de composants. */
  GLint type;                /**< Le type des composants. */
  GLint location;            /**< La location. */
  GLfloat floatValue[4];     /**< Le tableau de float a transferer dans le cas du type float. */
  GLint intValue[4];         /**< Le tableau de int a transferer dans le cas du type int. */
} uniform_info;

GLuint createProgram(GLuint vertShader,GLuint fragShader);
GLuint createProgram(char *vertShaderFile,GLuint *vertShader,char *fragShaderFile,GLuint *fragShader);
void checkUniforms(uniform_info *uniforms,GLuint program);
void checkUniforms(uniform_info *uniforms,GLuint program,int aff);

#endif
