GL4Dummies  0.1.7
Référence du fichier gl4dummies.h

gestion simplifiée de GL sous différents OS et fonctionnalité de cryptage des shaders. Plus de détails...

#include <SDL.h>
#include <SDL_opengl.h>
#include <stdio.h>
#include <stdlib.h>
Graphe des dépendances par inclusion de gl4dummies.h:
Ce graphe montre quels fichiers incluent directement ou indirectement ce fichier :

Aller au code source de ce fichier.

Macros

#define __cdecl
 
#define __declspec(type)
 
#define _CRTIMP
 
#define _DLLSPEC   dllimport
 
#define INLINE   static inline
 
#define GL4DAPI   extern
 
#define GL4DAPIENTRY
 
#define GL_GLEXT_PROTOTYPES
 
#define GL4D_VAO_INDEX   GL_UNSIGNED_INT
 
#define GL4D_GL_ERROR
 
#define MKFWINIT0(prefix, ret)
 
#define MKFWINIT1(prefix, ret, t1)
 
#define MKFWINIT2(prefix, ret, t1, t2)
 
#define MKFWINIT3(prefix, ret, t1, t2, t3)
 
#define MKFWINIT4(prefix, ret, t1, t2, t3, t4)
 
#define MKFWINIT5(prefix, ret, t1, t2, t3, t4, t5)
 
#define MKFWINIT6(prefix, ret, t1, t2, t3, t4, t5, t6)
 
#define MKFWINIT7(prefix, ret, t1, t2, t3, t4, t5, t6, t7)
 
#define MKFWINIT8(prefix, ret, t1, t2, t3, t4, t5, t6, t7, t8)
 
#define MKFWINIT9(prefix, ret, t1, t2, t3, t4, t5, t6, t7, t8, t9)
 

Définitions de type

typedef GLuint GL4Dvaoindex
 

Fonctions

GL4DAPI int GL4DAPIENTRY gl4dExtensionSupported (const char *extension)
 recherche une extension dans glGetString(GL_EXTENSIONS) Plus de détails...
 
GL4DAPI void GL4DAPIENTRY gl4dQuit (void)
 se charge de desalouer la memoire eventuellement utilisee par gl4dummies Plus de détails...
 
GL4DAPI char *GL4DAPIENTRY gl4dReadTextFile (const char *filename)
 recopie un fichier texte en mémoire et renvoie un pointeur vers la donnée recopiée. Plus de détails...
 
GL4DAPI char *GL4DAPIENTRY gl4dExtractFromDecData (const char *decData, const char *filename)
 recherche le shader filename dans le dat décrypté decData et retourne une copie du code. Plus de détails...
 
GL4DAPI void GL4DAPIENTRY gl4dInitTime0 (void)
 Initialise t0. Plus de détails...
 
GL4DAPI double GL4DAPIENTRY gl4dGetElapsedTime (void)
 Donne le temps ecoule en millisecondes depuis t0. Plus de détails...
 
GL4DAPI void GL4DAPIENTRY gl4dInitTime (void)
 Initialise ti. Plus de détails...
 
GL4DAPI double GL4DAPIENTRY gl4dGetTime (void)
 Donne le temps ecoule en millisecondes depuis ti. Plus de détails...
 
GL4DAPI double GL4DAPIENTRY gl4dGetFps (void)
 Calcule le FPS - Frames Per Second. Plus de détails...
 
GL4DAPI int GL4DAPIENTRY mv (const char *src, const char *dst)
 Déplace un fichier. Plus de détails...
 
GL4DAPI char *GL4DAPIENTRY pathOf (const char *path)
 Renvoie le chemin vers le dossier contenant le fichier passé en argument. Plus de détails...
 
GL4DAPI char *GL4DAPIENTRY filenameOf (const char *path)
 Renvoie le nom de fichier sans le chemin. Plus de détails...
 

Description détaillée

gestion simplifiée de GL sous différents OS et fonctionnalité de cryptage des shaders.

Auteur
Farès BELHADJ amsi@.nosp@m.graf.nosp@m.eet.f.nosp@m.r (ou amsi@.nosp@m.ai.u.nosp@m.niv-p.nosp@m.aris.nosp@m.8.fr)
Date
March 28, 2008 - February 07, 2014

Définition dans le fichier gl4dummies.h.

Documentation des macros

◆ __cdecl

#define __cdecl

◆ __declspec

#define __declspec (   type)

◆ _CRTIMP

#define _CRTIMP

◆ _DLLSPEC

#define _DLLSPEC   dllimport

◆ GL4D_GL_ERROR

#define GL4D_GL_ERROR
Valeur :
do {\
GLint err = glGetError();\
if (err != GL_NO_ERROR)\
fprintf(stderr, "GL error at %s/%s()/%d: 0x%08x\n", __FILE__, __func__, __LINE__, err);\
} while(0)

◆ GL4D_VAO_INDEX

#define GL4D_VAO_INDEX   GL_UNSIGNED_INT

◆ GL4DAPI

#define GL4DAPI   extern

◆ GL4DAPIENTRY

#define GL4DAPIENTRY

◆ GL_GLEXT_PROTOTYPES

#define GL_GLEXT_PROTOTYPES

◆ INLINE

#define INLINE   static inline

◆ MKFWINIT0

#define MKFWINIT0 (   prefix,
  ret 
)
Valeur :
static ret prefix ## finit(void); \
static ret prefix ## ffunc(void); \
static ret (*prefix ## fptr) (void) = prefix ## finit

◆ MKFWINIT1

#define MKFWINIT1 (   prefix,
  ret,
  t1 
)
Valeur :
static ret prefix ## finit(t1); \
static ret prefix ## ffunc(t1); \
static ret (*prefix ## fptr) (t1) = prefix ## finit

◆ MKFWINIT2

#define MKFWINIT2 (   prefix,
  ret,
  t1,
  t2 
)
Valeur :
static ret prefix ## finit(t1, t2); \
static ret prefix ## ffunc(t1, t2); \
static ret (*prefix ## fptr) (t1, t2) = prefix ## finit

◆ MKFWINIT3

#define MKFWINIT3 (   prefix,
  ret,
  t1,
  t2,
  t3 
)
Valeur :
static ret prefix ## finit(t1, t2, t3); \
static ret prefix ## ffunc(t1, t2, t3); \
static ret (*prefix ## fptr) (t1, t2, t3) = prefix ## finit

◆ MKFWINIT4

#define MKFWINIT4 (   prefix,
  ret,
  t1,
  t2,
  t3,
  t4 
)
Valeur :
static ret prefix ## finit(t1, t2, t3, t4); \
static ret prefix ## ffunc(t1, t2, t3, t4); \
static ret (*prefix ## fptr) (t1, t2, t3, t4) = prefix ## finit

◆ MKFWINIT5

#define MKFWINIT5 (   prefix,
  ret,
  t1,
  t2,
  t3,
  t4,
  t5 
)
Valeur :
static ret prefix ## finit(t1, t2, t3, t4, t5); \
static ret prefix ## ffunc(t1, t2, t3, t4, t5); \
static ret (*prefix ## fptr) (t1, t2, t3, t4, t5) = prefix ## finit

◆ MKFWINIT6

#define MKFWINIT6 (   prefix,
  ret,
  t1,
  t2,
  t3,
  t4,
  t5,
  t6 
)
Valeur :
static ret prefix ## finit(t1, t2, t3, t4, t5, t6); \
static ret prefix ## ffunc(t1, t2, t3, t4, t5, t6); \
static ret (*prefix ## fptr) (t1, t2, t3, t4, t5, t6) = prefix ## finit

◆ MKFWINIT7

#define MKFWINIT7 (   prefix,
  ret,
  t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7 
)
Valeur :
static ret prefix ## finit(t1, t2, t3, t4, t5, t6, t7); \
static ret prefix ## ffunc(t1, t2, t3, t4, t5, t6, t7); \
static ret (*prefix ## fptr) (t1, t2, t3, t4, t5, t6, t7) = prefix ## finit

◆ MKFWINIT8

#define MKFWINIT8 (   prefix,
  ret,
  t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8 
)
Valeur :
static ret prefix ## finit(t1, t2, t3, t4, t5, t6, t7, t8); \
static ret prefix ## ffunc(t1, t2, t3, t4, t5, t6, t7, t8); \
static ret (*prefix ## fptr) (t1, t2, t3, t4, t5, t6, t7, t8) = prefix ## finit

◆ MKFWINIT9

#define MKFWINIT9 (   prefix,
  ret,
  t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8,
  t9 
)
Valeur :
static ret prefix ## finit(t1, t2, t3, t4, t5, t6, t7, t8, t9); \
static ret prefix ## ffunc(t1, t2, t3, t4, t5, t6, t7, t8, t9); \
static ret (*prefix ## fptr) (t1, t2, t3, t4, t5, t6, t7, t8, t9) = prefix ## finit

Documentation des définitions de type

◆ GL4Dvaoindex

typedef GLuint GL4Dvaoindex

Documentation des fonctions

◆ filenameOf()

GL4DAPI char* GL4DAPIENTRY filenameOf ( const char *  path)

Renvoie le nom de fichier sans le chemin.

Prend le nom du fichier à  partir de la dernière occurence du '/'. Cette chaîne doit être libérée avec free après usage.

Paramètres
pathle chemin vers le fichier/dossier
Renvoie
le nom de fichier sans le chemin. La chaîne renvoyée doit être libérée avec free après usage.
A faire:
renommer et bouger ailleurs
346  {
347  char * tmp = strrchr(path, '/');
348  if (tmp == NULL)
349  return strdup(path);
350  return strdup(++tmp);
351 }

◆ gl4dExtensionSupported()

GL4DAPI int GL4DAPIENTRY gl4dExtensionSupported ( const char *  extension)

recherche une extension dans glGetString(GL_EXTENSIONS)

Renvoie
vrai si l'extension est trouvée
50  {
51  const char * extensions = (const char *)glGetString(GL_EXTENSIONS);
52  return kmpSearch(extension, extensions) < (int)strlen(extensions) ? 1 : 0;
53 }

Références kmpSearch().

◆ gl4dExtractFromDecData()

GL4DAPI char* GL4DAPIENTRY gl4dExtractFromDecData ( const char *  decData,
const char *  filename 
)

recherche le shader filename dans le dat décrypté decData et retourne une copie du code.

105  {
106  int i, j;
107  char a[BUFSIZ], * r;
108  snprintf(a, BUFSIZ, "<shader %s>", filename);
109  if((i = kmpSearch(a, decData)) < 0)
110  return NULL;
111  if((j = kmpSearch("</shader>", &decData[i + strlen(a)])) < 0)
112  return NULL;
113  r = malloc((j + 1) * sizeof * r);
114  assert(r);
115  strncpy(r, &decData[i + strlen(a)], j);
116  r[j] = 0;
117  return r;
118 }

Références kmpSearch().

Référencé par addInShadersListFED().

◆ gl4dGetElapsedTime()

GL4DAPI double GL4DAPIENTRY gl4dGetElapsedTime ( void  )

Donne le temps ecoule en millisecondes depuis t0.

Voir également
initTime0
Renvoie
le temps ecoule en millisecondes.
220  {
221  return getET();
222 }

Références getET.

Référencé par gl4duPrintFPS().

◆ gl4dGetFps()

GL4DAPI double GL4DAPIENTRY gl4dGetFps ( void  )

Calcule le FPS - Frames Per Second.

Mettre un appel a cette fonction juste apres (ou avant) chaque affichage.

Voir également
gl4dInitTime0
getElapsedTime
Renvoie
le nombre d'images par seconde.
262  {
263  static int f = 0;
264  static double t0 = 0, t1 = 0, fps = 0.0;
265  t1 = gl4dGetTime(); f++;
266  if(t1 - t0 > 1000) {
267  fps = 1000.0 * f / (t1 - t0);
268  t0 = t1; f = 0;
269  }
270  return fps;
271 }

Références gl4dGetTime(), et t0.

◆ gl4dGetTime()

GL4DAPI double GL4DAPIENTRY gl4dGetTime ( void  )

Donne le temps ecoule en millisecondes depuis ti.

Voir également
gl4dInitTime
Renvoie
le temps ecoule en millisecondes.
243  {
244  struct timeval t;
245  double diff;
246  gettimeofday(&t, (struct timezone*) 0);
247  diff = (t.tv_sec - ti.tv_sec) * 1000000
248  + (t.tv_usec - ti.tv_usec);
249  return diff/1000.;
250 }

Références ti.

Référencé par gl4dGetFps().

◆ gl4dInitTime()

GL4DAPI void GL4DAPIENTRY gl4dInitTime ( void  )

Initialise ti.

233  {
234  gettimeofday(&ti, (struct timezone*) 0);
235 }

Références ti.

◆ gl4dInitTime0()

GL4DAPI void GL4DAPIENTRY gl4dInitTime0 ( void  )

Initialise t0.

210  {
211  gettimeofday(&t0, (struct timezone*) 0);
212 }

Références t0.

Référencé par getElapsedTime_sub1().

◆ gl4dQuit()

GL4DAPI void GL4DAPIENTRY gl4dQuit ( void  )

se charge de desalouer la memoire eventuellement utilisee par gl4dummies

58  {
59  kmpSearch(NULL, NULL);
60 }

Références kmpSearch().

◆ gl4dReadTextFile()

GL4DAPI char* GL4DAPIENTRY gl4dReadTextFile ( const char *  filename)

recopie un fichier texte en mémoire et renvoie un pointeur vers la donnée recopiée.

Renvoie
un pointeur vers le texte recopié en mémoire. La mémoire doit être libérée par free.
68  {
69  int l;
70  char * data = NULL;
71  FILE * f;
72  struct stat buf;
73  if(stat(filename, &buf) != 0) {
74  fprintf(stderr, "%s:%d:In %s: error %d: %s (%s)\n",
75  __FILE__, __LINE__, __func__, errno, strerror(errno), filename);
76  return NULL;
77  }
78  data = malloc( (buf.st_size + 1) * sizeof * data );
79  assert(data);
80  if( (f = fopen(filename, "rb")) == NULL ) {
81  fprintf(stderr, "%s:%d:In %s: error %d: %s (%s)\n",
82  __FILE__, __LINE__, __func__, errno, strerror(errno), filename);
83  free(data);
84  return NULL;
85  }
86 #ifdef _WIN32
87  if( (l = (int)fread(data, sizeof * data, buf.st_size, f)) == 0) {
88 #else
89  if( (l = (int)fread(data, sizeof * data, buf.st_size, f)) != buf.st_size) {
90 #endif
91  fprintf(stderr, "%s:%d:In %s: une erreur s'est produite lors de la lecture du fichier %s\n",
92  __FILE__, __LINE__, __func__, filename);
93  free(data);
94  fclose(f);
95  return NULL;
96  }
97  data[l] = '\0';
98  fclose(f);
99  return data;
100 }

Référencé par addInShadersList().

◆ mv()

GL4DAPI int GL4DAPIENTRY mv ( const char *  src,
const char *  dst 
)

Déplace un fichier.

Paramètres
srcle chemin vers le fichier à  déplacer
dstle nouveau chemin/nom
Renvoie
1 en cas de succès sinon 0.
A faire:
gérer les dossiers, les unlink (liés à l'OS) ...
A faire:
renommer et bouger ailleurs
285  {
286  size_t l;
287  char buf[BUFSIZ] = {0};
288  FILE *in = fopen(src, "rb");
289  if(!in) {
290  return 0;
291  }
292  FILE* out = fopen(dst, "wb");
293  if(!out) {
294  fclose(in);
295  return 0;
296  }
297  while((l = fread(buf, 1, sizeof buf, in)) > 0)
298  fwrite(buf, 1, l, out);
299  fclose(out); fclose(in);
300  if(remove(src))
301  return 1;
302  return 0;
303 }

Références in().

◆ pathOf()

GL4DAPI char* GL4DAPIENTRY pathOf ( const char *  path)

Renvoie le chemin vers le dossier contenant le fichier passé en argument.

Fabrique la chaîne allant jusqu'à la dernière occurence du '/'. Cette chaîne doit être libérée avec free après usage.

Paramètres
pathle chemin vers le fichier/dossier
Renvoie
le chemin vers le dossier contenant le fichier passé en argument. La chaîne renvoyée doit être libérée avec free après usage.
A faire:
renommer et bouger ailleurs
319  {
320  int spos = -1;
321  char * tmp, * ptr;
322  tmp = malloc((strlen(path) + 1) * sizeof * tmp); assert(tmp); strcpy(tmp, path); //strdup(path);
323  ptr = tmp;
324  while(*ptr) {
325  if(*ptr == '/' || *ptr == '\\')
326  spos = ptr - tmp;
327  ++ptr;
328  }
329  tmp[spos >= 0 ? spos : 0] = 0;
330  return tmp;
331 }

Référencé par findPathOfMe().

in
static int in(void *func, void **funcList, int n)
regarde si le pointeur func est un élément du tableau funcList
Definition: gl4dhAnimeManager.c:143
ti
static struct timeval ti
Une variable de temps. A initialiser avec gl4dInitTime.
Definition: gl4dummies.c:229
getET
static double(* getET)(void)
Definition: gl4dummies.c:191
t0
static struct timeval t0
Le temps initial du programme. A initialiser avec gl4dInitTime0.
Definition: gl4dummies.c:186
kmpSearch
static int kmpSearch(const char *p, const char *t)
recherche un motif dans un text
Definition: gl4dummies.c:129
gl4dGetTime
double gl4dGetTime(void)
Donne le temps ecoule en millisecondes depuis ti.
Definition: gl4dummies.c:243