GL4Dummies
0.1.7
|
The GL4Dummies Geometry. Plus de détails...
#include <math.h>
#include "linked_list.h"
#include "gl4dg.h"
#include "gl4dm.h"
#include <stdlib.h>
#include <assert.h>
Aller au code source de ce fichier.
Structures de données | |
struct | geom_t |
struct | gsphere_t |
struct | gstatic_t |
struct | gcone_t |
struct | gcylinder_t |
struct | gdisk_t |
struct | gtorus_t |
struct | ggrid2d_t |
struct | gteapot_t |
Macros | |
#define | SELECT_GEOMETRY_OPTIMIZATION(index, geom, w, h) |
permet de sélectionner une topologie à utiliser selon le niveau d'optimisation géométrique choisie. Plus de détails... | |
#define | DRAW_WITH_GEOMETRY_OPTIMIZATION(geom) |
dessine un element-array selon la topologie de l'objet. Plus de détails... | |
#define | DISK_FAN(d, i, ym, ye, slices, normals) |
Macro servant à remplir des FANs, soit en disk soit en cone. d est data, i est indice à partir duquel remplir, ym est le y du point central, ye est le y du point extreme, slices est le nombre de longitudes et normals est la fonction calculant les normales. Plus de détails... | |
Définitions de type | |
typedef struct geom_t | geom_t |
typedef struct gsphere_t | gsphere_t |
typedef struct gstatic_t | gstatic_t |
typedef struct gcone_t | gcone_t |
typedef struct gcylinder_t | gcylinder_t |
typedef struct gdisk_t | gdisk_t |
typedef struct gtorus_t | gtorus_t |
typedef struct ggrid2d_t | ggrid2d_t |
typedef struct gteapot_t | gteapot_t |
typedef enum geom_e | geom_e |
Énumérations | |
enum | geom_e { GE_NONE = 0, GE_SPHERE, GE_QUAD, GE_CUBE, GE_CONE, GE_FAN_CONE, GE_CYLINDER, GE_DISK, GE_TORUS, GE_GRID2D, GE_TEAPOT } |
Fonctions | |
static void | freeGeom (void *data) |
static GLuint | genId (void) |
static GLuint | mkStaticf (geom_e type) |
static GLfloat * | mkSphereVerticesf (GLuint slices, GLuint stacks) |
static GL4Dvaoindex * | mkRegularGridTriangleIndices (GLuint width, GLuint height) |
static GL4Dvaoindex * | mkRegularGridStripsIndices (GLuint width, GLuint height) |
static GL4Dvaoindex * | mkRegularGridStripIndices (GLuint width, GLuint height) |
static GL4Dvaoindex * | mkRegularGridTriangleAdjacencyIndices (GLuint width, GLuint height) |
static GL4Dvaoindex * | mkRegularGridStripsAdjacencyIndices (GLuint width, GLuint height) |
static GLfloat * | mkConeVerticesf (GLuint slices, GLboolean base) |
static GLfloat * | mkFanConeVerticesf (GLuint slices, GLboolean base) |
static GLfloat * | mkCylinderVerticesf (GLuint slices, GLboolean base) |
static GLfloat * | mkDiskVerticesf (GLuint slices) |
static GLfloat * | mkTorusVerticesf (GLuint slices, GLuint stacks, GLfloat radius) |
static GLfloat * | mkGrid2dVerticesf (GLuint width, GLuint height, GLfloat *heightmap) |
static GLfloat * | mkTeapotVerticesf (GLuint slices) |
static void | mkGrid2dNormalsf (GLuint width, GLuint height, GLfloat *data) |
static void | triangleNormalf (GLfloat *out, GLfloat *p0, GLfloat *p1, GLfloat *p2) |
static int | _maxi (int a, int b) |
static int | _mini (int a, int b) |
void | gl4dgInit (void) |
Initialise les structures nécessaire au stockage des géométries proposées par GL4Dummies. Cette fonction est appelée par la fonction gl4duInit, utilisez donc cette dernière. Plus de détails... | |
void | gl4dgClean (void) |
Libère les structures nécessaire au stockage des géométries proposées par GL4Dummies en supprimant aussi tous les objets produits. Cette fonction est appelée par la fonction gl4duClean avec l'argument GL4DU_GEOMETRY ou GL4DU_ALL, utilisez donc cette dernière. Plus de détails... | |
void | gl4dgSetGeometryOptimizationLevel (GLuint level) |
Modifie le niveau d'optimisation de certaines des géométries à générer (exemple le torus, la grid et la sphère). Plus de détails... | |
GLuint | gl4dgGetVAO (GLuint id) |
Renvoie l'identifiant du Vertex Array Object correspondant à l'objet-géométrie référencé par id. Plus de détails... | |
GLuint | gl4dgGenSpheref (GLuint slices, GLuint stacks) |
Génère un objet-géométrie de type sphère et renvoie son identifiant (référence). Plus de détails... | |
GLuint | gl4dgGenQuadf (void) |
Génère un objet-géométrie de type Quad (plan vertical en z=0) et renvoie son identifiant (référence). Plus de détails... | |
GLuint | gl4dgGenCubef (void) |
Génère un objet-géométrie de type cube et renvoie son identifiant (référence). Plus de détails... | |
GLuint | gl4dgGenConef (GLuint slices, GLboolean base) |
Génère un objet-géométrie de type cone et renvoie son identifiant (référence). Plus de détails... | |
GLuint | gl4dgGenFanConef (GLuint slices, GLboolean base) |
Génère un objet-géométrie de type fan-cone et renvoie son identifiant (référence). Plus de détails... | |
GLuint | gl4dgGenCylinderf (GLuint slices, GLboolean base) |
Génère un objet-géométrie de type cylindre et renvoie son identifiant (référence). Plus de détails... | |
GLuint | gl4dgGenDiskf (GLuint slices) |
Génère un objet-géométrie de type disque et renvoie son identifiant (référence). Plus de détails... | |
GLuint | gl4dgGenTorusf (GLuint slices, GLuint stacks, GLfloat radius) |
Génère un objet-géométrie de type tore et renvoie son identifiant (référence). Plus de détails... | |
GLuint | gl4dgGenGrid2df (GLuint width, GLuint height) |
Génère un objet-géométrie de type grille de sommets et renvoie son identifiant (référence). Plus de détails... | |
GLuint | gl4dgGenGrid2dFromHeightMapf (GLuint width, GLuint height, GLfloat *heightmap) |
Génère un objet-géométrie de type grille-heightmap et renvoie son identifiant (référence). Plus de détails... | |
GLuint | gl4dgGenTeapotf (GLuint slices) |
Génère un objet-géométrie de type théière et renvoie son identifiant (référence). Plus de détails... | |
void | gl4dgDraw (GLuint id) |
Dessine un objet-géométrie dont l'identifiant (référence) est passé en argument. Plus de détails... | |
void | gl4dgDelete (GLuint id) |
Détruit un objet-géométrie dont l'identifiant (référence) est passé en argument. Plus de détails... | |
static void | fcvNormals (GLfloat *p, GLfloat y, int i) |
static void | fcvbNormals (GLfloat *p, GLfloat y, int i) |
Variables | |
static geom_t * | _garray = NULL |
static GLint | _garray_size = 256 |
static linked_list_t * | _glist = NULL |
static int | _hasInit = 0 |
static GLuint | _geometry_optimization_level = 1 |
#define DISK_FAN | ( | d, | |
i, | |||
ym, | |||
ye, | |||
slices, | |||
normals | |||
) |
Macro servant à remplir des FANs, soit en disk soit en cone. d est data, i est indice à partir duquel remplir, ym est le y du point central, ye est le y du point extreme, slices est le nombre de longitudes et normals est la fonction calculant les normales.
#define DRAW_WITH_GEOMETRY_OPTIMIZATION | ( | geom | ) |
dessine un element-array selon la topologie de l'objet.
#define SELECT_GEOMETRY_OPTIMIZATION | ( | index, | |
geom, | |||
w, | |||
h | |||
) |
permet de sélectionner une topologie à utiliser selon le niveau d'optimisation géométrique choisie.
typedef struct gcylinder_t gcylinder_t |
enum geom_e |
|
inlinestatic |
Référencé par mkRegularGridStripsAdjacencyIndices(), et mkRegularGridTriangleAdjacencyIndices().
|
inlinestatic |
Référencé par mkRegularGridTriangleAdjacencyIndices().
|
inlinestatic |
Référencé par mkConeVerticesf(), mkCylinderVerticesf(), mkDiskVerticesf(), et mkFanConeVerticesf().
|
inlinestatic |
Référencé par mkConeVerticesf(), mkCylinderVerticesf(), et mkFanConeVerticesf().
|
static |
Références GE_CONE, GE_CUBE, GE_CYLINDER, GE_DISK, GE_FAN_CONE, GE_GRID2D, GE_QUAD, GE_SPHERE, GE_TEAPOT, GE_TORUS, geom_t::geom, geom_t::type, et geom_t::vao.
Référencé par gl4dgClean(), et gl4dgDelete().
|
static |
Références _garray, _garray_size, _glist, geom_t::geom, geom_t::id, llEmpty(), llPop(), llPush(), geom_t::type, et geom_t::vao.
Référencé par gl4dgGenConef(), gl4dgGenCylinderf(), gl4dgGenDiskf(), gl4dgGenFanConef(), gl4dgGenGrid2dFromHeightMapf(), gl4dgGenSpheref(), gl4dgGenTeapotf(), gl4dgGenTorusf(), et mkStaticf().
void gl4dgClean | ( | void | ) |
Libère les structures nécessaire au stockage des géométries proposées par GL4Dummies en supprimant aussi tous les objets produits. Cette fonction est appelée par la fonction gl4duClean avec l'argument GL4DU_GEOMETRY ou GL4DU_ALL, utilisez donc cette dernière.
Références _garray, _garray_size, _glist, _hasInit, freeGeom(), et llFree().
Référencé par gl4duClean().
void gl4dgDelete | ( | GLuint | id | ) |
Détruit un objet-géométrie dont l'identifiant (référence) est passé en argument.
id | identifiant de l'objet à supprimer. |
Références _garray, _glist, freeGeom(), llPush(), geom_t::type, et geom_t::vao.
Référencé par quit().
void gl4dgDraw | ( | GLuint | id | ) |
Dessine un objet-géométrie dont l'identifiant (référence) est passé en argument.
id | identifiant de l'objet à dessiner. |
Références _garray, DRAW_WITH_GEOMETRY_OPTIMIZATION, GE_CONE, GE_CUBE, GE_CYLINDER, GE_DISK, GE_FAN_CONE, GE_GRID2D, GE_QUAD, GE_SPHERE, GE_TEAPOT, et GE_TORUS.
Référencé par blurffunc(), cannyffunc(), drawTex(), fractalPaintingffunc(), medianffunc(), opffunc(), scatteringffunc(), et sobelffunc().
GLuint gl4dgGenConef | ( | GLuint | slices, |
GLboolean | base | ||
) |
Génère un objet-géométrie de type cone et renvoie son identifiant (référence).
Le cone est meshé à l'aide d'un triangle_strip, sa base est faite d'un triangle_fan.
slices | le nombre de longitudes du cone. |
base | indique s'il y a ou pas une base au cone. |
Références _garray, gcone_t::base, gcone_t::buffer, GE_CONE, genId(), geom_t::geom, mkConeVerticesf(), gcone_t::slices, et geom_t::type.
GLuint gl4dgGenCubef | ( | void | ) |
Génère un objet-géométrie de type cube et renvoie son identifiant (référence).
Ce cube est composé de 6 plans meshés par des triangle_strips. Le normales sont aux plans.
Références GE_CUBE, et mkStaticf().
GLuint gl4dgGenCylinderf | ( | GLuint | slices, |
GLboolean | base | ||
) |
Génère un objet-géométrie de type cylindre et renvoie son identifiant (référence).
Le cylindre est meshé à l'aide d'un triangle_strip, ses bases sont faites de triangle_fans.
slices | le nombre de longitudes du cylindre. |
base | indique s'il y a ou pas deux bases au cylindre (top et bas). |
Références _garray, gcylinder_t::base, gcylinder_t::buffer, GE_CYLINDER, genId(), geom_t::geom, mkCylinderVerticesf(), gcylinder_t::slices, et geom_t::type.
GLuint gl4dgGenDiskf | ( | GLuint | slices | ) |
Génère un objet-géométrie de type disque et renvoie son identifiant (référence).
Le disque est composé d'un triangle_fan, il est en y=0 et est tourné vers le haut.
slices | le nombre de longitudes du disque. |
Références _garray, gdisk_t::buffer, GE_DISK, genId(), geom_t::geom, mkDiskVerticesf(), gdisk_t::slices, et geom_t::type.
GLuint gl4dgGenFanConef | ( | GLuint | slices, |
GLboolean | base | ||
) |
Génère un objet-géométrie de type fan-cone et renvoie son identifiant (référence).
Le cone et sa base sont meshés par triangle_fan.
slices | le nombre de longitudes du cone. |
base | indique s'il y a ou pas une base au cone. |
Références _garray, gcone_t::base, gcone_t::buffer, GE_FAN_CONE, genId(), geom_t::geom, mkFanConeVerticesf(), gcone_t::slices, et geom_t::type.
GLuint gl4dgGenGrid2df | ( | GLuint | width, |
GLuint | height | ||
) |
Génère un objet-géométrie de type grille de sommets et renvoie son identifiant (référence).
La grille est couchée en y=0 et est orientée vers le haut
width | la largeur de la grille. |
height | la hauteur de la grille. |
Références gl4dgGenGrid2dFromHeightMapf().
GLuint gl4dgGenGrid2dFromHeightMapf | ( | GLuint | width, |
GLuint | height, | ||
GLfloat * | heightmap | ||
) |
Génère un objet-géométrie de type grille-heightmap et renvoie son identifiant (référence).
La grille est couchée en y=0 et est orientée vers le haut
width | la largeur de la grille. |
height | la hauteur de la grille. |
heightmap | matrice de mêmes dimensions que la grille et servant de carte de hauteurs permettant de déplacer les sommets de la grille (les normales sont calculées et lissées en fonction de la heightmap). Les valeurs doivent être données entre 0 et 1 afin d'obtenir une grille dont les y varient entre -1 et +1. |
Références _garray, ggrid2d_t::buffers, GE_GRID2D, genId(), geom_t::geom, ggrid2d_t::height, ggrid2d_t::index_nb_rows, ggrid2d_t::index_row_count, mkGrid2dVerticesf(), SELECT_GEOMETRY_OPTIMIZATION, geom_t::type, et ggrid2d_t::width.
Référencé par gl4dgGenGrid2df().
GLuint gl4dgGenQuadf | ( | void | ) |
Génère un objet-géométrie de type Quad (plan vertical en z=0) et renvoie son identifiant (référence).
La géométrie est décrite par 4 sommets reliés par un triangle_strip.
Références GE_QUAD, et mkStaticf().
Référencé par gl4dpInitScreenWithDimensions(), et init().
GLuint gl4dgGenSpheref | ( | GLuint | slices, |
GLuint | stacks | ||
) |
Génère un objet-géométrie de type sphère et renvoie son identifiant (référence).
Cette sphère est obtenue par transformation des coordonnées polaires en coordonnées cartésiennes.
slices | le nombre de longitudes de la sphère. |
stacks | le nombre de latitudes de la sphère. |
Références _garray, gsphere_t::buffers, GE_SPHERE, genId(), geom_t::geom, gsphere_t::index_nb_rows, gsphere_t::index_row_count, mkSphereVerticesf(), SELECT_GEOMETRY_OPTIMIZATION, gsphere_t::slices, gsphere_t::stacks, et geom_t::type.
GLuint gl4dgGenTeapotf | ( | GLuint | slices | ) |
Génère un objet-géométrie de type théière et renvoie son identifiant (référence).
La théière est meshée à l'aide d'un triangle_strip.
slices | le nombre de longitudes de la théière. |
Références _garray, gteapot_t::buffer, GE_TEAPOT, genId(), geom_t::geom, mkTeapotVerticesf(), gteapot_t::slices, et geom_t::type.
GLuint gl4dgGenTorusf | ( | GLuint | slices, |
GLuint | stacks, | ||
GLfloat | radius | ||
) |
Génère un objet-géométrie de type tore et renvoie son identifiant (référence).
slices | le nombre de longitudes du tore. |
stacks | le nombre de "latitudes" (subdivisions en coupe verticale) du tore. |
radius | le rayon d'une section verticale du tore (eq. rayon du pneu). |
Références _garray, gtorus_t::buffers, GE_TORUS, genId(), geom_t::geom, gtorus_t::index_nb_rows, gtorus_t::index_row_count, mkTorusVerticesf(), gtorus_t::radius, SELECT_GEOMETRY_OPTIMIZATION, gtorus_t::slices, gtorus_t::stacks, et geom_t::type.
GLuint gl4dgGetVAO | ( | GLuint | id | ) |
Renvoie l'identifiant du Vertex Array Object correspondant à l'objet-géométrie référencé par id.
id | la référence de l'objet-géométrie généré par cette bibliothèque. |
Références _garray, et geom_t::vao.
void gl4dgInit | ( | void | ) |
Initialise les structures nécessaire au stockage des géométries proposées par GL4Dummies. Cette fonction est appelée par la fonction gl4duInit, utilisez donc cette dernière.
Chaque géométrie générée via les fonctions gl4dgGenXXXXXX peut être libérée si nécessaire par gl4dgDelete en lui passant l'identifiant de l'objet-géométrie obtenu. Sinon utiliser, en fin de programme, gl4dgClean ou gl4duClean avec l'argument GL4DU_GEOMETRY ou GL4DU_ALL.
Références _garray, _garray_size, _glist, _hasInit, geom_t::id, llNew(), et llPush().
Référencé par gl4duInit().
void gl4dgSetGeometryOptimizationLevel | ( | GLuint | level | ) |
Modifie le niveau d'optimisation de certaines des géométries à générer (exemple le torus, la grid et la sphère).
level | trois niveaux sont possibles : 0 fabriquer surtout des triangles, 1 (par défaut) tenter de faire des triangle_strips, 2 essayer de tout faire en une seule strip. |
Références _geometry_optimization_level.
|
static |
|
static |
|
static |
|
static |
|
static |
Références triangleNormalf().
Référencé par mkGrid2dVerticesf().
|
static |
|
static |
|
static |
Références _maxi().
|
static |
|
static |
|
static |
|
static |
Référencé par gl4dgGenSpheref().
|
static |
Références _garray, gstatic_t::buffer, GE_CUBE, GE_QUAD, genId(), geom_t::geom, et geom_t::type.
Référencé par gl4dgGenCubef(), et gl4dgGenQuadf().
|
static |
Référencé par gl4dgGenTeapotf().
|
static |
|
inlinestatic |
|
static |
|
static |
Référencé par genId(), gl4dgClean(), et gl4dgInit().
|
static |
Référencé par gl4dgSetGeometryOptimizationLevel().
|
static |
Référencé par genId(), gl4dgClean(), gl4dgDelete(), et gl4dgInit().
|
static |
Référencé par gl4dgClean(), et gl4dgInit().