GL4Dummies
0.1.7
|
The GL4Dummies Utilities. Plus de détails...
#include "gl4du.h"
#include <string.h>
#include "gl4dh.h"
#include "bin_tree.h"
#include "linked_list.h"
#include <sys/stat.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>
#include "aes.h"
#include <errno.h>
#include <limits.h>
#include <unistd.h>
Aller au code source de ce fichier.
Structures de données | |
struct | shader_t |
struct | program_t |
struct | _GL4DUMatrix |
structure de données pour une pile de "une matrice 4x4". Plus de détails... | |
Définitions de type | |
typedef struct shader_t | shader_t |
typedef struct program_t | program_t |
typedef struct _GL4DUMatrix | _GL4DUMatrix |
type de données lié à la structure struct _GL4DUMatrix. Plus de détails... | |
Fonctions | |
static shader_t ** | findfnInShadersList (const char *filename) |
recherche un shader à partir du nom de fichier dans la liste shaders_list. Plus de détails... | |
static shader_t ** | findidInShadersList (GLuint id) |
recherche un shader à partir de son identifiant openGL dans la liste shaders_list. Plus de détails... | |
static shader_t ** | addInShadersList (GLenum shadertype, const char *filename, const char *shadercode) |
ajoute un nouveau shader dans la liste de shaders shaders_list. Plus de détails... | |
static shader_t ** | addInShadersListFED (const char *decData, GLenum shadertype, const char *filename) |
ajoute un nouveau shader dans la liste de shaders shaders_list. Version FED Plus de détails... | |
static void | deleteFromShadersList (shader_t **shp) |
supprime le shader pointé par shp de la liste de shaders shaders_list. Plus de détails... | |
static program_t ** | findInProgramsList (GLuint id) |
recherche un program à partir de son identifiant openGL dans la liste programs_list. Plus de détails... | |
static program_t ** | addInProgramsList (GLuint id) |
ajoute un nouveau program dans la liste de program programs_list. Plus de détails... | |
static void | deleteFromProgramsList (program_t **pp) |
supprime le program pointé par pp de la liste des programs programs_list. Plus de détails... | |
static void | attachShader (program_t *prg, shader_t *sh) |
attache (lie) un program à un shader et vice versa. Plus de détails... | |
static void | detachShader (program_t *prg, shader_t *sh) |
détache (délie) un program à un shader et vice versa. Plus de détails... | |
static _GL4DUMatrix * | newGL4DUMatrix (GLenum type, const char *name) |
créé une nouvelle pile de "une matrice 4x4" dont le nom est name et le type est type. Plus de détails... | |
static void | freeGL4DUMatrix (void *matrix) |
libère la pile de "une matrice 4x4". Plus de détails... | |
static int | matrixCmpFunc (const void *m1, const void *m2) |
fonction de comparaison de deux matrices en fonction du nom pour insertion dans l'arbre binaire. Plus de détails... | |
static bin_tree_t ** | findMatrix (const char *name) |
recherche et renvoie le pointeur de pointeur vers le noeud de l'arbre binaire pointant vers la matrice dont le nom est passé en argument (name). Plus de détails... | |
static void * | matrixData (_GL4DUMatrix *matrix) |
retourne le pointeur vers les données de la matrice (pile de "une matrice 4x4") courante. Plus de détails... | |
static void | findPathOfMe (const char *argv0) |
void | gl4duInit (int argc, char **argv) |
Initialise la bibliothèque. Plus de détails... | |
int | gl4duHasInit (void) |
indique si la bibliothèque a été initialisée Plus de détails... | |
void | gl4duMakeBinRelativePath (char *dst, size_t dst_size, const char *filename) |
Ajoute _pathOfMe au chemin filename passé en argument et stocke l'ensemble dans dst. Plus de détails... | |
void | gl4duPrintShaderInfoLog (GLuint object, FILE *fp) |
imprime s'il existe l'infoLog de la compilation du Shader object dans fp. Plus de détails... | |
void | gl4duPrintProgramInfoLog (GLuint object, FILE *fp) |
imprime s'il existe l'infoLog de l'édition de liens pour le Program object dans fp. Plus de détails... | |
void | gl4duPrintFPS (FILE *fp) |
imprime dans le fichier pointé par fp le Frame-Per-Second. Plus de détails... | |
GLuint | gl4duCreateShader (GLenum shadertype, const char *filename) |
retourne l'identifiant du shader décrit dans filename. Plus de détails... | |
GLuint | gl4duCreateShaderIM (GLenum shadertype, const char *filename, const char *shadercode) |
retourne l'identifiant du shader dont le code source est shadercode et le nom de fichier est filename ; le nom de fichier est fictif et sert seulement d'identifiant. Plus de détails... | |
GLuint | gl4duCreateShaderFED (const char *decData, GLenum shadertype, const char *filename) |
retourne l'identifiant du shader décrit dans filename. Version FED de la précédente Plus de détails... | |
GLuint | gl4duFindShader (const char *filename) |
retourne l'identifiant du shader décrit dans filename. Plus de détails... | |
void | gl4duDeleteShader (GLuint id) |
supprime le shader dont l'identifiant openGL est id de la liste de shaders shaders_list. Plus de détails... | |
GLuint | gl4duCreateProgram (const char *firstone,...) |
créé un program à partir d'une liste (variable) de nom de fichiers shaders et renvoie l'identifiant openGL du program créé. Plus de détails... | |
GLuint | gl4duCreateProgramFED (const char *encData, const char *firstone,...) |
créé un program à partir d'une liste (variable) de nom de fichiers shaders encapsulés dans un fichier crypté préalablement décrypté en ram et renvoie l'identifiant openGL du program créé. Plus de détails... | |
void | gl4duDeleteProgram (GLuint id) |
supprime le program dont l'identifiant openGL est id de la liste de programs programs_list. Plus de détails... | |
void | gl4duClean (GL4DUenum what) |
supprime tous les programs et/ou tous les shaders. Plus de détails... | |
void | gl4duAtExit (void(*func)(void)) |
ajoute func dans la liste des fonctions à appeler lors du gl4duClean avec l'argument GL4DU_AT_EXIT ou GL4DU_ALL. Plus de détails... | |
void | gl4duCleanUnattached (GL4DUenum what) |
supprime programs et/ou shaders non liés. Plus de détails... | |
int | gl4duUpdateShaders (void) |
parcours la liste des shaders shaders_list et vérifie s'il y a besoin de mettre à jour le shader (recompiler et relinker). Plus de détails... | |
GLboolean | gl4duGenMatrix (GLenum type, const char *name) |
génère et gère une matrice (pile de "une matrice 4x4") liée au nom name et de type type. Plus de détails... | |
GLboolean | gl4duIsMatrix (const char *name) |
indique s'il existe une matrice est liée au nom name passé en argument. Plus de détails... | |
GLboolean | gl4duBindMatrix (const char *name) |
active (met en current) la matrice liée au nom name passé en argument. Plus de détails... | |
GLboolean | gl4duDeleteMatrix (const char *name) |
supprime la matrice liée au nom name passé en argument. Plus de détails... | |
void | gl4duPushMatrix (void) |
empile (sauvegarde) la matrice courante et utilise une nouvelle matrice dont le contenu est le meme que celle empilée. Plus de détails... | |
void | gl4duPopMatrix (void) |
dépile la matrice courante en restaurant l'état précédemment sauvegardé à l'aide de gl4duPushMatrix. Plus de détails... | |
void | sendMatrix (void *m, void **ppId) |
utilisée par btForAll pour envoyer la matrice m sur le program Id pointé par ppId. Plus de détails... | |
void | gl4duSendMatrix (void) |
envoie la matrice courante au program shader en cours et en utilisant le nom de la matrice pour obtenir le uniform location. Plus de détails... | |
void | gl4duSendMatrices (void) |
envoie toutes matrices au program shader en cours et en utilisant leurs noms pour obtenir le uniform location. Plus de détails... | |
void | gl4duFrustumf (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) |
Création d'une matrice de projection perspective selon l'ancienne fonction glFrustum et la multiplie dans la matrice en cours. Plus de détails... | |
void | gl4duFrustumd (GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f) |
Création d'une matrice de projection perspective selon l'ancienne fonction glFrustum et la multiplie dans la matrice en cours. Plus de détails... | |
void | gl4duOrthof (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) |
Création d'une matrice de projection orthogonale selon l'ancienne fonction glOrtho et la multiplie dans la matrice en cours. Plus de détails... | |
void | gl4duOrthod (GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f) |
Création d'une matrice de projection orthogonale selon l'ancienne fonction glOrtho et la multiplie dans la matrice en cours. Plus de détails... | |
void | gl4duPerspectivef (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar) |
Création d'une matrice de projection perspective selon l'ancienne fonction gluPerspective et la multiplie dans la matrice en cours. Plus de détails... | |
void | gl4duPerspectived (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar) |
Création d'une matrice de projection perspective selon l'ancienne fonction gluPerspective et la multiplie dans la matrice en cours. Plus de détails... | |
void | gl4duLoadIdentityf (void) |
Chargement d'une matrice identité dans la matrice en cours. Plus de détails... | |
void | gl4duLoadIdentityd (void) |
Chargement d'une matrice identité dans la matrice en cours. Plus de détails... | |
void | gl4duLoadMatrixf (const GLfloat *matrix) |
Chargement d'une matrice matrix dans la matrice en cours. Plus de détails... | |
void | gl4duLoadMatrixd (const GLdouble *matrix) |
Chargement d'une matrice matrix dans la matrice en cours. Plus de détails... | |
void | gl4duMultMatrixf (const GLfloat *matrix) |
Multiplication de la matrice en cours par une matrice matrix. Plus de détails... | |
void | gl4duMultMatrixd (const GLdouble *matrix) |
Multiplication de la matrice en cours par une matrice matrix. Plus de détails... | |
void | gl4duMultMatrixByName (const char *name) |
Multiplication de la matrice en cours par une des matrices connues dans GL4Dummies. Cette fonction utilise le nom de la matrice name afin de la récupérer et réaliser la multiplication à droite, le tout dans la matrice courante : currentMatrix = currentMatrix x matrixBy(name) Plus de détails... | |
void | gl4duRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z) |
Multiplication de la matrice en cours par une matrice de rotation définie par un angle angle donné en degrés autour de l'axe (x, y, z). Plus de détails... | |
void | gl4duRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z) |
Multiplication de la matrice en cours par une matrice de rotation définie par un angle angle donné en degrés autour de l'axe (x, y, z). Plus de détails... | |
void | gl4duTranslatef (GLfloat tx, GLfloat ty, GLfloat tz) |
Multiplication de la matrice en cours par une matrice de translation (tx, ty, tz). Plus de détails... | |
void | gl4duTranslated (GLdouble tx, GLdouble ty, GLdouble tz) |
Multiplication de la matrice en cours par une matrice de translation (tx, ty, tz). Plus de détails... | |
void | gl4duScalef (GLfloat sx, GLfloat sy, GLfloat sz) |
Multiplication de la matrice en cours par une matrice d'homothétie (sx, sy, sz). Plus de détails... | |
void | gl4duScaled (GLdouble sx, GLdouble sy, GLdouble sz) |
Multiplication de la matrice en cours par une matrice d'homothétie (sx, sy, sz). Plus de détails... | |
void | gl4duLookAtf_DNW (GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ) |
void | gl4duLookAtf (GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ) |
Définie des transformations pour simuler un point de vue avec direction de regard et orientation. Plus de détails... | |
void | gl4duLookAtd (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ) |
Définie des transformations pour simuler un point de vue avec direction de regard et orientation. Plus de détails... | |
void * | gl4duGetMatrixData (void) |
retourne le pointeur vers les données de la matrice (pile de "une matrice 4x4") courante. Plus de détails... | |
GLboolean | gl4duGetIntegerv (GL4DUenum pname, GLint *params) |
Renseigne sur la valeur du paramètre demandé. Le paramètre est envoyé via pname et sera stocké dans params. Plus de détails... | |
Variables | |
static shader_t * | shaders_list = NULL |
liste de vertex et fragment shaders. Chaque shader est composé d'un id (GL), du type, du nom de fichier et de la date de modification du fichier. Plus de détails... | |
static program_t * | programs_list = NULL |
liste de programs. Chaque program est composé d'un id (GL), il est lié à une liste de shaders. Plus de détails... | |
static bin_tree_t * | _gl4duMatrices = NULL |
arbre binaire contenant l'ensemble des matrices _GL4DUMatrix gérées. Plus de détails... | |
static _GL4DUMatrix * | _gl4dCurMatrix = NULL |
la matrice _GL4DUMatrix courante. Plus de détails... | |
static bin_tree_t ** | _gl4dLastMatrixn = NULL |
le noeud vers la dernière matrice _GL4DUMatrix créée. Plus de détails... | |
static linked_list_t * | _aelist = NULL |
pile des fonctions à appeler lors du "at exit" de gl4duClean. Cette liste est remplie par gl4duAtExit. Plus de détails... | |
static char | _pathOfMe [BUFSIZ] = {0} |
stocke le chemin relatif à partir duquel le binaire a été exécuté. Est initialisée dans gl4dInit. Plus de détails... | |
static int | _pathOfMeInit = 0 |
static int | _hasInit = 0 |
The GL4Dummies Utilities.
Définition dans le fichier gl4du.c.
typedef struct _GL4DUMatrix _GL4DUMatrix |
type de données lié à la structure struct _GL4DUMatrix.
|
static |
ajoute un nouveau program dans la liste de program programs_list.
Références program_t::id, program_t::next, program_t::nshaders, programs_list, program_t::shaders, et program_t::sshaders.
Référencé par gl4duCreateProgram(), et gl4duCreateProgramFED().
|
static |
ajoute un nouveau shader dans la liste de shaders shaders_list.
shadertype | type de shader (vertex, fragment et geometry) |
filename | nom du fichier shader |
shadercode | source du shader, si NULL sera récupéré depuis filename |
Références shader_t::filename, gl4dReadTextFile(), gl4duPrintShaderInfoLog(), shader_t::id, shader_t::mod_time, shader_t::next, shader_t::nprograms, shader_t::programs, shaders_list, shader_t::shadertype, shader_t::sprograms, shader_t::todelete, et shader_t::verify_timestamp.
Référencé par gl4duCreateShader(), gl4duCreateShaderIM(), et gl4duUpdateShaders().
|
static |
ajoute un nouveau shader dans la liste de shaders shaders_list. Version FED
Références shader_t::filename, gl4dExtractFromDecData(), gl4duPrintShaderInfoLog(), shader_t::id, shader_t::mod_time, shader_t::next, shader_t::nprograms, shader_t::programs, shaders_list, shader_t::shadertype, shader_t::sprograms, shader_t::todelete, et shader_t::verify_timestamp.
Référencé par gl4duCreateShaderFED().
attache (lie) un program à un shader et vice versa.
Références shader_t::id, program_t::id, shader_t::nprograms, program_t::nshaders, shader_t::programs, program_t::shaders, shader_t::sprograms, et program_t::sshaders.
Référencé par gl4duCreateProgram(), gl4duCreateProgramFED(), et gl4duUpdateShaders().
|
static |
supprime le program pointé par pp de la liste des programs programs_list.
Références detachShader(), program_t::id, program_t::next, program_t::nshaders, et program_t::shaders.
Référencé par gl4duClean(), gl4duCleanUnattached(), gl4duCreateProgram(), gl4duCreateProgramFED(), et gl4duDeleteProgram().
|
static |
supprime le shader pointé par shp de la liste de shaders shaders_list.
Références shader_t::filename, shader_t::id, shader_t::next, et shader_t::programs.
Référencé par detachShader(), gl4duClean(), gl4duCleanUnattached(), gl4duDeleteShader(), et gl4duUpdateShaders().
détache (délie) un program à un shader et vice versa.
Références deleteFromShadersList(), findidInShadersList(), shader_t::id, program_t::id, shader_t::nprograms, program_t::nshaders, shader_t::programs, program_t::shaders, et shader_t::todelete.
Référencé par deleteFromProgramsList(), et gl4duUpdateShaders().
|
static |
recherche un shader à partir du nom de fichier dans la liste shaders_list.
Si le shader n'existe pas la fonction retourne NULL;
filename | le nom (le chemin entier (relatif)) du fichier contenant le shader |
Références shaders_list.
Référencé par gl4duCreateShader(), gl4duCreateShaderFED(), gl4duCreateShaderIM(), et gl4duFindShader().
|
static |
recherche un shader à partir de son identifiant openGL dans la liste shaders_list.
Si le shader n'existe pas la fonction retourne NULL;
id | l'identifiant openGL du shader. |
Références shaders_list.
Référencé par detachShader(), gl4duCreateProgram(), gl4duCreateProgramFED(), et gl4duDeleteShader().
|
static |
recherche un program à partir de son identifiant openGL dans la liste programs_list.
Si le program n'existe pas la fonction retourne NULL;
Références programs_list.
Référencé par gl4duDeleteProgram().
|
inlinestatic |
recherche et renvoie le pointeur de pointeur vers le noeud de l'arbre binaire pointant vers la matrice dont le nom est passé en argument (name).
name | le nom de la matrice recherchée. |
Références _gl4dLastMatrixn, _gl4duMatrices, btFind(), pair_t::compResult, matrixCmpFunc(), _GL4DUMatrix::name, et pair_t::ptr.
Référencé par gl4duBindMatrix(), gl4duDeleteMatrix(), et gl4duMultMatrixByName().
|
static |
Références _pathOfMe, _pathOfMeInit, et pathOf().
Référencé par gl4duInit().
|
inlinestatic |
libère la pile de "une matrice 4x4".
matrix | est la pile de "une matrice 4x4". |
Référencé par gl4duClean(), et gl4duDeleteMatrix().
void gl4duAtExit | ( | void(*)(void) | func | ) |
ajoute func dans la liste des fonctions à appeler lors du gl4duClean avec l'argument GL4DU_AT_EXIT ou GL4DU_ALL.
func | la fonction à ajouter dans la liste. |
Références _aelist, llNew(), et llPush().
Référencé par fheapCreate(), et init().
GLboolean gl4duBindMatrix | ( | const char * | name | ) |
active (met en current) la matrice liée au nom name passé en argument.
Si la matrice existe l'active et renvoie GL_TRUE, sinon renvoie GL_FALSE. Si le paramètre name est NULL, désactive toute matrice et renvoie GL_TRUE.
name | le nom de la matrice à rechercher pour activer. Si NULL désactive (dé-bind) tout. |
Références _gl4dCurMatrix, et findMatrix().
void gl4duClean | ( | GL4DUenum | what | ) |
supprime tous les programs et/ou tous les shaders.
Références _aelist, _gl4duMatrices, _hasInit, btFree(), deleteFromProgramsList(), deleteFromShadersList(), freeGL4DUMatrix(), gl4dgClean(), gl4dhClean(), GL4DU_AT_EXIT, GL4DU_DEMO_HELPER, GL4DU_GEOMETRY, GL4DU_MATRICES, GL4DU_PROGRAM, GL4DU_SHADER, llEmpty(), llFree(), llPop(), programs_list, et shaders_list.
void gl4duCleanUnattached | ( | GL4DUenum | what | ) |
supprime programs et/ou shaders non liés.
Références deleteFromProgramsList(), deleteFromShadersList(), GL4DU_PROGRAM, GL4DU_SHADER, programs_list, et shaders_list.
GLuint gl4duCreateProgram | ( | const char * | firstone, |
... | |||
) |
créé un program à partir d'une liste (variable) de nom de fichiers shaders et renvoie l'identifiant openGL du program créé.
Les arguments sont les noms des fichiers shaders précédés d'un tag indiquant le type de shader : <vs> pour un vertex shader, <tcs> pour un tessellation control shader, <tes> pour un tessellation evaluation shader, <gs> pour un geometry shader, <fs> pour un fragment shader et <cs> pour un compute shader.
Sur le même principe, au lieu d'avoir le tag suivi du nom de fichier shader correspondant, utiliser le tag ouvrant <im*> et fermant </im*> pour inclure directement le code du shader dans la chaîne en mémoire (im => in memory). Ce qui donne par exemple pour le vertex shader : "<imvs> ... le code du vertex shader ... </imvs>".
Références addInProgramsList(), attachShader(), deleteFromProgramsList(), findidInShadersList(), gl4duCreateShader(), gl4duCreateShaderIM(), et gl4duPrintProgramInfoLog().
Référencé par gl4dpInitScreenWithDimensions(), et init().
GLuint gl4duCreateProgramFED | ( | const char * | encData, |
const char * | firstone, | ||
... | |||
) |
créé un program à partir d'une liste (variable) de nom de fichiers shaders encapsulés dans un fichier crypté préalablement décrypté en ram et renvoie l'identifiant openGL du program créé.
encData | fichier contenant un ensemble de shaders cryptés. |
firstone | premier des n paramètres de la présente fonction à arguments variables ; ces arguments donnent les noms de fichiers contenus dans l'archive cryptée endCata. Ces noms de fichiers shaders sont précédés d'un tag indiquant le type de shader : <vs> pour un vertex shader, <tcs> pour un tessellation control shader, <tes> pour un tessellation evaluation shader, <gs> pour un geometry shader, <fs> pour un fragment shader et <cs> pour un compute shader. |
Références addInProgramsList(), aes_from_tar(), attachShader(), deleteFromProgramsList(), findidInShadersList(), gl4duCreateShaderFED(), et gl4duPrintProgramInfoLog().
GLuint gl4duCreateShader | ( | GLenum | shadertype, |
const char * | filename | ||
) |
retourne l'identifiant du shader décrit dans filename.
Soit le shader existe déjà et l'identifiant est juste retourné avec findfnInShadersList, soit il est créer en utilisant gl4duCreateShader, glShaderSource et glCompileShader. Il se peut que le shader soit mis à jour si la date de modification du fichier est differente de celle stoquée dans shaders_list. Dans ce cas le shader est détruit puis recréé et la modification doit être répercuté sur tous les PROGRAMs liés.
Références addInShadersList(), findfnInShadersList(), et gl4duMakeBinRelativePath().
Référencé par gl4duCreateProgram().
GLuint gl4duCreateShaderFED | ( | const char * | decData, |
GLenum | shadertype, | ||
const char * | filename | ||
) |
retourne l'identifiant du shader décrit dans filename. Version FED de la précédente
commenter
ajouter la gestion des chemins relatifs à l'emplacement du binaire comme pour gl4duCreateShader.
Références addInShadersListFED(), findfnInShadersList(), et shader_t::id.
Référencé par gl4duCreateProgramFED().
GLuint gl4duCreateShaderIM | ( | GLenum | shadertype, |
const char * | filename, | ||
const char * | shadercode | ||
) |
retourne l'identifiant du shader dont le code source est shadercode et le nom de fichier est filename ; le nom de fichier est fictif et sert seulement d'identifiant.
Soit le shader existe déjà et l'identifiant est juste retourné avec findfnInShadersList, soit il est créer en utilisant gl4duCreateShader, glShaderSource et glCompileShader.
Références addInShadersList(), findfnInShadersList(), et shader_t::id.
Référencé par gl4duCreateProgram().
GLboolean gl4duDeleteMatrix | ( | const char * | name | ) |
supprime la matrice liée au nom name passé en argument.
Si la matrice existe la supprime et renvoie GL_TRUE, sinon renvoie GL_FALSE. Si la matrice supprimée est la meme que la matrice courante (active), la matrice courante passe à NULL.
name | le nom de la matrice à rechercher pour suppression. |
Références _gl4dCurMatrix, _gl4dLastMatrixn, btDelete(), findMatrix(), et freeGL4DUMatrix().
void gl4duDeleteProgram | ( | GLuint | id | ) |
supprime le program dont l'identifiant openGL est id de la liste de programs programs_list.
Références deleteFromProgramsList(), et findInProgramsList().
void gl4duDeleteShader | ( | GLuint | id | ) |
supprime le shader dont l'identifiant openGL est id de la liste de shaders shaders_list.
Références deleteFromShadersList(), et findidInShadersList().
GLuint gl4duFindShader | ( | const char * | filename | ) |
retourne l'identifiant du shader décrit dans filename.
Soit le shader existe et l'identifiant est retourné soit la fonction retourne 0.
Références findfnInShadersList().
void gl4duFrustumd | ( | GLdouble | l, |
GLdouble | r, | ||
GLdouble | b, | ||
GLdouble | t, | ||
GLdouble | n, | ||
GLdouble | f | ||
) |
Création d'une matrice de projection perspective selon l'ancienne fonction glFrustum et la multiplie dans la matrice en cours.
La matrice en cours doit être de type GLdouble sinon utiliser gl4duFrustumf si le type est GLfloat.
Références gl4duMultMatrixd(), et MFRUSTUM.
void gl4duFrustumf | ( | GLfloat | l, |
GLfloat | r, | ||
GLfloat | b, | ||
GLfloat | t, | ||
GLfloat | n, | ||
GLfloat | f | ||
) |
Création d'une matrice de projection perspective selon l'ancienne fonction glFrustum et la multiplie dans la matrice en cours.
La matrice en cours doit être de type GLfloat sinon utiliser gl4duFrustumd si le type est GLdouble.
Références gl4duMultMatrixf(), et MFRUSTUM.
GLboolean gl4duGenMatrix | ( | GLenum | type, |
const char * | name | ||
) |
génère et gère une matrice (pile de "une matrice 4x4") liée au nom name et de type type.
Le type peut etre GL_FLOAT ou GL_DOUBLE.
type | le type de la matrice à créer : GL_FLOAT ou GL_DOUBLE. |
name | le nom de la matrice à créer. |
Références _gl4dLastMatrixn, _gl4duMatrices, btFind(), btInsert(), pair_t::compResult, matrixCmpFunc(), _GL4DUMatrix::name, newGL4DUMatrix(), et pair_t::ptr.
GLboolean gl4duGetIntegerv | ( | GL4DUenum | pname, |
GLint * | params | ||
) |
Renseigne sur la valeur du paramètre demandé. Le paramètre est envoyé via pname et sera stocké dans params.
pname | le paramètre demandé. |
params | là où sera stockée la/les valeur(s) du paramètre demandé. |
Références _gl4dCurMatrix, GL4DU_MATRIX_TYPE, et _GL4DUMatrix::type.
void* gl4duGetMatrixData | ( | void | ) |
retourne le pointeur vers les données de la matrice (pile de "une matrice 4x4") courante.
En pratique, prend la donnée en haut de la pile. Le type de retour est (void *), il faut le caster dans le type correspondant au type de la matrice.
Références _gl4dCurMatrix, et matrixData().
int gl4duHasInit | ( | void | ) |
void gl4duInit | ( | int | argc, |
char ** | argv | ||
) |
Initialise la bibliothèque.
Récupère le chemin relatif à partir duquel le binaire a été exécuté et le stocke dans _pathOfMe.
Initialise gl4dg via gl4dgInit
Références _hasInit, findPathOfMe(), et gl4dgInit().
Référencé par initGL4DUW().
GLboolean gl4duIsMatrix | ( | const char * | name | ) |
indique s'il existe une matrice est liée au nom name passé en argument.
name | le nom de la matrice à rechercher. |
Références _gl4duMatrices, btFind(), pair_t::compResult, matrixCmpFunc(), et _GL4DUMatrix::name.
void gl4duLoadIdentityd | ( | void | ) |
Chargement d'une matrice identité dans la matrice en cours.
La matrice en cours doit être de type GLdouble sinon utiliser gl4duLoadIdentityf si le type est GLfloat.
Références _gl4dCurMatrix, _GL4DUMatrix::data, MIDENTITY, _GL4DUMatrix::size, _GL4DUMatrix::top, et _GL4DUMatrix::type.
void gl4duLoadIdentityf | ( | void | ) |
Chargement d'une matrice identité dans la matrice en cours.
La matrice en cours doit être de type GLfloat sinon utiliser gl4duLoadIdentityd si le type est GLdouble.
Références _gl4dCurMatrix, _GL4DUMatrix::data, MIDENTITY, _GL4DUMatrix::size, _GL4DUMatrix::top, et _GL4DUMatrix::type.
void gl4duLoadMatrixd | ( | const GLdouble * | matrix | ) |
Chargement d'une matrice matrix dans la matrice en cours.
La matrice en cours doit être de type GLdouble sinon utiliser gl4duLoadMatrixf si le type est GLfloat.
matrix | la matrice 4x4 à charger. |
Références _gl4dCurMatrix, _GL4DUMatrix::data, _GL4DUMatrix::size, _GL4DUMatrix::top, et _GL4DUMatrix::type.
void gl4duLoadMatrixf | ( | const GLfloat * | matrix | ) |
Chargement d'une matrice matrix dans la matrice en cours.
La matrice en cours doit être de type GLfloat sinon utiliser gl4duLoadMatrixd si le type est GLdouble.
matrix | la matrice 4x4 à charger. |
Références _gl4dCurMatrix, _GL4DUMatrix::data, _GL4DUMatrix::size, _GL4DUMatrix::top, et _GL4DUMatrix::type.
void gl4duLookAtd | ( | GLdouble | eyeX, |
GLdouble | eyeY, | ||
GLdouble | eyeZ, | ||
GLdouble | centerX, | ||
GLdouble | centerY, | ||
GLdouble | centerZ, | ||
GLdouble | upX, | ||
GLdouble | upY, | ||
GLdouble | upZ | ||
) |
Définie des transformations pour simuler un point de vue avec direction de regard et orientation.
Version GL4Dummies de la fonction gluLookAt pour les types GLdouble (les matrices GL_DOUBLE). Pour la version gérant les double voir
eyeX | abcsisse de l'oeil. |
eyeY | ordonnée de l'oeil. |
eyeZ | cote de l'oeil. |
centerX | abcsisse du point observé. |
centerY | ordonnée du point observé. |
centerZ | cote du point observé. |
upX | X du vecteur décrivant l'orientation de la "tete" de l'observateur (vecteur haut) |
upY | Y du vecteur décrivant l'orientation de la "tete" de l'observateur (vecteur haut) |
upZ | Y du vecteur décrivant l'orientation de la "tete" de l'observateur (vecteur haut) |
Références gl4duMultMatrixd(), gl4duTranslated(), MVEC3CROSS, et MVEC3NORMALIZE.
void gl4duLookAtf | ( | GLfloat | eyeX, |
GLfloat | eyeY, | ||
GLfloat | eyeZ, | ||
GLfloat | centerX, | ||
GLfloat | centerY, | ||
GLfloat | centerZ, | ||
GLfloat | upX, | ||
GLfloat | upY, | ||
GLfloat | upZ | ||
) |
Définie des transformations pour simuler un point de vue avec direction de regard et orientation.
Version GL4Dummies de la fonction gluLookAt pour les types GLfloat (les matrices GL_FLOAT). Pour la version gérant les double voir
eyeX | abcsisse de l'oeil. |
eyeY | ordonnée de l'oeil. |
eyeZ | cote de l'oeil. |
centerX | abcsisse du point observé. |
centerY | ordonnée du point observé. |
centerZ | cote du point observé. |
upX | X du vecteur décrivant l'orientation de la "tete" de l'observateur (vecteur haut) |
upY | Y du vecteur décrivant l'orientation de la "tete" de l'observateur (vecteur haut) |
upZ | Y du vecteur décrivant l'orientation de la "tete" de l'observateur (vecteur haut) |
Références gl4duMultMatrixf(), gl4duTranslatef(), MVEC3CROSS, et MVEC3NORMALIZE.
void gl4duLookAtf_DNW | ( | GLfloat | eyeX, |
GLfloat | eyeY, | ||
GLfloat | eyeZ, | ||
GLfloat | centerX, | ||
GLfloat | centerY, | ||
GLfloat | centerZ, | ||
GLfloat | upX, | ||
GLfloat | upY, | ||
GLfloat | upZ | ||
) |
Références gl4duMultMatrixf(), gl4duTranslatef(), MVEC3CROSS, et MVEC3NORMALIZE.
void gl4duMakeBinRelativePath | ( | char * | dst, |
size_t | dst_size, | ||
const char * | filename | ||
) |
Ajoute _pathOfMe au chemin filename passé en argument et stocke l'ensemble dans dst.
Références _pathOfMe, et _pathOfMeInit.
Référencé par gl4duCreateShader().
void gl4duMultMatrixByName | ( | const char * | name | ) |
Multiplication de la matrice en cours par une des matrices connues dans GL4Dummies. Cette fonction utilise le nom de la matrice name afin de la récupérer et réaliser la multiplication à droite, le tout dans la matrice courante : currentMatrix = currentMatrix x matrixBy(name)
name | le nom de la matrice GL4Dummies à utiliser pour la multiplication (currentMatrix x matrixBy(name)). |
Références _gl4dCurMatrix, _GL4DUMatrix::data, findMatrix(), MMAT4XMAT4, _GL4DUMatrix::size, _GL4DUMatrix::top, et _GL4DUMatrix::type.
void gl4duMultMatrixd | ( | const GLdouble * | matrix | ) |
Multiplication de la matrice en cours par une matrice matrix.
La matrice en cours doit être de type GLdouble sinon utiliser gl4duMultMatrixf si le type est GLfloat.
matrix | la matrice 4x4 utilisée pour la multiplication (curMatrix x matrix). |
Références _gl4dCurMatrix, _GL4DUMatrix::data, MMAT4XMAT4, _GL4DUMatrix::size, _GL4DUMatrix::top, et _GL4DUMatrix::type.
Référencé par gl4duFrustumd(), gl4duLookAtd(), gl4duOrthod(), gl4duPerspectived(), gl4duRotated(), gl4duScaled(), et gl4duTranslated().
void gl4duMultMatrixf | ( | const GLfloat * | matrix | ) |
Multiplication de la matrice en cours par une matrice matrix.
La matrice en cours doit être de type GLfloat sinon utiliser gl4duMultMatrixd si le type est GLdouble.
matrix | la matrice 4x4 utilisée pour la multiplication (curMatrix x matrix). |
Références _gl4dCurMatrix, _GL4DUMatrix::data, MMAT4XMAT4, _GL4DUMatrix::size, _GL4DUMatrix::top, et _GL4DUMatrix::type.
Référencé par gl4duFrustumf(), gl4duLookAtf(), gl4duLookAtf_DNW(), gl4duOrthof(), gl4duPerspectivef(), gl4duRotatef(), gl4duScalef(), et gl4duTranslatef().
void gl4duOrthod | ( | GLdouble | l, |
GLdouble | r, | ||
GLdouble | b, | ||
GLdouble | t, | ||
GLdouble | n, | ||
GLdouble | f | ||
) |
Création d'une matrice de projection orthogonale selon l'ancienne fonction glOrtho et la multiplie dans la matrice en cours.
La matrice en cours doit être de type GLdouble sinon utiliser gl4duOrthof si le type est GLfloat.
Références gl4duMultMatrixd(), et MORTHO.
void gl4duOrthof | ( | GLfloat | l, |
GLfloat | r, | ||
GLfloat | b, | ||
GLfloat | t, | ||
GLfloat | n, | ||
GLfloat | f | ||
) |
Création d'une matrice de projection orthogonale selon l'ancienne fonction glOrtho et la multiplie dans la matrice en cours.
La matrice en cours doit être de type GLfloat sinon utiliser gl4duOrthod si le type est GLdouble.
Références gl4duMultMatrixf(), et MORTHO.
void gl4duPerspectived | ( | GLdouble | fovy, |
GLdouble | aspect, | ||
GLdouble | zNear, | ||
GLdouble | zFar | ||
) |
Création d'une matrice de projection perspective selon l'ancienne fonction gluPerspective et la multiplie dans la matrice en cours.
La matrice en cours doit être de type GLdouble sinon utiliser gl4duPerspectivef si le type est GLfloat.
Références gl4duMultMatrixd(), et MPERSPECTIVE.
void gl4duPerspectivef | ( | GLdouble | fovy, |
GLdouble | aspect, | ||
GLdouble | zNear, | ||
GLdouble | zFar | ||
) |
Création d'une matrice de projection perspective selon l'ancienne fonction gluPerspective et la multiplie dans la matrice en cours.
La matrice en cours doit être de type GLfloat sinon utiliser gl4duPerspectived si le type est GLdouble.
Références gl4duMultMatrixf(), et MPERSPECTIVE.
void gl4duPopMatrix | ( | void | ) |
dépile la matrice courante en restaurant l'état précédemment sauvegardé à l'aide de gl4duPushMatrix.
Références _gl4dCurMatrix, et _GL4DUMatrix::top.
void gl4duPrintFPS | ( | FILE * | fp | ) |
imprime dans le fichier pointé par fp le Frame-Per-Second.
Cette fonction doit être appelée dans la loop.
Références gl4dGetElapsedTime(), et t0.
Référencé par gl4duwMainLoop().
void gl4duPrintProgramInfoLog | ( | GLuint | object, |
FILE * | fp | ||
) |
imprime s'il existe l'infoLog de l'édition de liens pour le Program object dans fp.
Référencé par gl4duCreateProgram(), et gl4duCreateProgramFED().
void gl4duPrintShaderInfoLog | ( | GLuint | object, |
FILE * | fp | ||
) |
imprime s'il existe l'infoLog de la compilation du Shader object dans fp.
Référencé par addInShadersList(), et addInShadersListFED().
void gl4duPushMatrix | ( | void | ) |
empile (sauvegarde) la matrice courante et utilise une nouvelle matrice dont le contenu est le meme que celle empilée.
La pile est dynamique, sa taille non limitée.
Références _gl4dCurMatrix, _GL4DUMatrix::data, _GL4DUMatrix::nmemb, _GL4DUMatrix::size, et _GL4DUMatrix::top.
void gl4duRotated | ( | GLdouble | angle, |
GLdouble | x, | ||
GLdouble | y, | ||
GLdouble | z | ||
) |
Multiplication de la matrice en cours par une matrice de rotation définie par un angle angle donné en degrés autour de l'axe (x, y, z).
angle | angle de rotation en degrés. |
x | abcsisse de l'axe de rotation. |
y | ordonnée de l'axe de rotation. |
z | cote de l'axe de rotation. |
Références GL4DM_PI, et gl4duMultMatrixd().
void gl4duRotatef | ( | GLfloat | angle, |
GLfloat | x, | ||
GLfloat | y, | ||
GLfloat | z | ||
) |
Multiplication de la matrice en cours par une matrice de rotation définie par un angle angle donné en degrés autour de l'axe (x, y, z).
angle | angle de rotation en degrés. |
x | abcsisse de l'axe de rotation. |
y | ordonnée de l'axe de rotation. |
z | cote de l'axe de rotation. |
Références GL4DM_PI, et gl4duMultMatrixf().
void gl4duScaled | ( | GLdouble | sx, |
GLdouble | sy, | ||
GLdouble | sz | ||
) |
Multiplication de la matrice en cours par une matrice d'homothétie (sx, sy, sz).
sx | abcsisse de l'homothétie. |
sy | ordonnée de l'homothétie. |
sz | cote de l'homothétie. |
Références gl4duMultMatrixd().
void gl4duScalef | ( | GLfloat | sx, |
GLfloat | sy, | ||
GLfloat | sz | ||
) |
Multiplication de la matrice en cours par une matrice d'homothétie (sx, sy, sz).
sx | abcsisse de l'homothétie. |
sy | ordonnée de l'homothétie. |
sz | cote de l'homothétie. |
Références gl4duMultMatrixf().
void gl4duSendMatrices | ( | void | ) |
envoie toutes matrices au program shader en cours et en utilisant leurs noms pour obtenir le uniform location.
Références _gl4duMatrices, btForAll(), et sendMatrix().
void gl4duSendMatrix | ( | void | ) |
envoie la matrice courante au program shader en cours et en utilisant le nom de la matrice pour obtenir le uniform location.
Références _gl4dCurMatrix, et sendMatrix().
void gl4duTranslated | ( | GLdouble | tx, |
GLdouble | ty, | ||
GLdouble | tz | ||
) |
Multiplication de la matrice en cours par une matrice de translation (tx, ty, tz).
tx | abcsisse de la translation. |
ty | ordonnée de la translation. |
tz | cote de la translation. |
Références gl4duMultMatrixd().
Référencé par gl4duLookAtd().
void gl4duTranslatef | ( | GLfloat | tx, |
GLfloat | ty, | ||
GLfloat | tz | ||
) |
Multiplication de la matrice en cours par une matrice de translation (tx, ty, tz).
tx | abcsisse de la translation. |
ty | ordonnée de la translation. |
tz | cote de la translation. |
Références gl4duMultMatrixf().
Référencé par gl4duLookAtf(), et gl4duLookAtf_DNW().
int gl4duUpdateShaders | ( | void | ) |
parcours la liste des shaders shaders_list et vérifie s'il y a besoin de mettre à jour le shader (recompiler et relinker).
La vérification est effectuée sur la date de modification du fichier representant le shader.
Références addInShadersList(), attachShader(), deleteFromShadersList(), detachShader(), et shaders_list.
Référencé par gl4duwMainLoop().
|
inlinestatic |
fonction de comparaison de deux matrices en fonction du nom pour insertion dans l'arbre binaire.
Cette fonction utilise strcmp.
m1 | première matrice (de type _GL4DUMatrix). |
m2 | seconde matrice (de type _GL4DUMatrix). |
Référencé par findMatrix(), gl4duGenMatrix(), et gl4duIsMatrix().
|
inlinestatic |
retourne le pointeur vers les données de la matrice (pile de "une matrice 4x4") courante.
En pratique, prend la donnée en haut de la pile. Le type de retour est (void *), il faut le caster dans le type correspondant au type de la matrice.
Références _GL4DUMatrix::data, _GL4DUMatrix::size, et _GL4DUMatrix::top.
Référencé par gl4duGetMatrixData(), et sendMatrix().
|
inlinestatic |
créé une nouvelle pile de "une matrice 4x4" dont le nom est name et le type est type.
La (pile de) matrice créée n'est pas initialisée et le haut de la pile pointe déjà sur une matrice.
type | est le type de données utilisé dans la matrice, peut etre GL_FLOAT ou GL_DOUBLE. |
name | est le nom unique donné à la matrice. |
Références _GL4DUMatrix::data, _GL4DUMatrix::name, _GL4DUMatrix::nmemb, _GL4DUMatrix::size, _GL4DUMatrix::top, et _GL4DUMatrix::type.
Référencé par gl4duGenMatrix().
void sendMatrix | ( | void * | m, |
void ** | ppId | ||
) |
utilisée par btForAll pour envoyer la matrice m sur le program Id pointé par ppId.
Références matrixData(), et _GL4DUMatrix::name.
Référencé par gl4duSendMatrices(), et gl4duSendMatrix().
|
static |
pile des fonctions à appeler lors du "at exit" de gl4duClean. Cette liste est remplie par gl4duAtExit.
Référencé par gl4duAtExit(), et gl4duClean().
|
static |
la matrice _GL4DUMatrix courante.
Référencé par gl4duBindMatrix(), gl4duDeleteMatrix(), gl4duGetIntegerv(), gl4duGetMatrixData(), gl4duLoadIdentityd(), gl4duLoadIdentityf(), gl4duLoadMatrixd(), gl4duLoadMatrixf(), gl4duMultMatrixByName(), gl4duMultMatrixd(), gl4duMultMatrixf(), gl4duPopMatrix(), gl4duPushMatrix(), et gl4duSendMatrix().
|
static |
le noeud vers la dernière matrice _GL4DUMatrix créée.
Référencé par findMatrix(), gl4duDeleteMatrix(), et gl4duGenMatrix().
|
static |
arbre binaire contenant l'ensemble des matrices _GL4DUMatrix gérées.
Référencé par findMatrix(), gl4duClean(), gl4duGenMatrix(), gl4duIsMatrix(), et gl4duSendMatrices().
|
static |
Référencé par gl4duClean(), gl4duHasInit(), et gl4duInit().
|
static |
stocke le chemin relatif à partir duquel le binaire a été exécuté. Est initialisée dans gl4dInit.
Référencé par findPathOfMe(), et gl4duMakeBinRelativePath().
|
static |
Référencé par findPathOfMe(), et gl4duMakeBinRelativePath().
|
static |
liste de programs. Chaque program est composé d'un id (GL), il est lié à une liste de shaders.
Référencé par addInProgramsList(), findInProgramsList(), gl4duClean(), et gl4duCleanUnattached().
|
static |
liste de vertex et fragment shaders. Chaque shader est composé d'un id (GL), du type, du nom de fichier et de la date de modification du fichier.
Référencé par addInShadersList(), addInShadersListFED(), findfnInShadersList(), findidInShadersList(), gl4duClean(), gl4duCleanUnattached(), et gl4duUpdateShaders().