GL4Dummies
0.1.7
|
Primitives de dessin 2D sur texture GL. Plus de détails...
#include <math.h>
#include "gl4dp.h"
#include "gl4dg.h"
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
Aller au code source de ce fichier.
Structures de données | |
struct | screen_node_t |
Définitions de type | |
typedef struct screen_node_t | screen_node_t |
Fonctions | |
static void | addScreen (GLuint w, GLuint h) |
ajoute un écran à la tête de liste d'écrans gérés. Plus de détails... | |
static void | drawTex (GLuint tId, const GLfloat scale[2], const GLfloat translate[2]) |
static void | updateScreenFromGPU (void) |
Uint32 | gl4dpGetColor (void) |
revoie la _cur_color. Plus de détails... | |
void | gl4dpSetColor (Uint32 color) |
met dans _cur_color la couleur passee en argument. Plus de détails... | |
GLuint | gl4dpInitScreenWithDimensions (GLuint w, GLuint h) |
initialise (ou réinitialise) l'écran aux dimensions w et h, le lie à l'identifiant (OpenGL) de texture retourné. Plus de détails... | |
GLuint | gl4dpInitScreen (void) |
initialise (ou réinitialise) l'écran aux dimensions du viewport OpenGL, le lie à l'identifiant (OpenGL) de texture retourné. Plus de détails... | |
int | gl4dpSetScreen (GLuint id) |
active comme écran courant l'écran dont l'id est passé en argument. Plus de détails... | |
void | gl4dpDeleteScreen (void) |
supprime l'écran et se repositionne sur le premier Plus de détails... | |
GLuint | gl4dpGetTextureId (void) |
retourne l'identifiant (OpenGL) de la texture liée à l'écran en cours. Plus de détails... | |
GLuint | gl4dpGetWidth (void) |
retourne la largeur de l'écran. Plus de détails... | |
GLuint | gl4dpGetHeight (void) |
retourne la hauteur de l'écran. Plus de détails... | |
GLuint * | gl4dpGetPixels (void) |
retourne le pointeur vers les pixels de l'écran courant. Plus de détails... | |
void | gl4dpClearScreen (void) |
Efface l'écran en mettant 0. Plus de détails... | |
void | gl4dpClearScreenWith (Uint32 color) |
Efface l'écran en y mettant la valeur color. Plus de détails... | |
Uint32 | gl4dpGetPixel (int x, int y) |
renvoie la couleur à la coordonnée (x, y) Plus de détails... | |
void | gl4dpPutPixel (int x, int y) |
met la couleur en cours à la coordonnée (x, y) Plus de détails... | |
void | gl4dpScreenHasChanged (void) |
indique que le screen a été modifié côté mémoire centrale (CPU), qu'il sera donc nécessaire de mettre à jour la mémoire graphique (GPU) lors de l'appel à la fonction gl4dpUpdateScreen. Plus de détails... | |
void | gl4dpUpdateScreen (GLint *rect) |
met à jour l'écran en envoyant la sous texture de dimensions rect à GL. Si rect vaut NULL, met à jour toute la texture. Plus de détails... | |
void | gl4dpRect (GLint *rect) |
dessine un rectangle rect en utilisant la couleur en cours. Plus de détails... | |
void | gl4dpLine (int x0, int y0, int x1, int y1) |
dessine un segment (x0, y0) -> (x1, y1) de couleur _cur_color en utilisant l'algorithme de Bresenham'65. Plus de détails... | |
void | gl4dpCircle (int x0, int y0, int r) |
dessine un cercle centré en (x0, y0) de rayon r en utilisant l'algorithme de Bresenham'77. Plus de détails... | |
void | gl4dpHLine (int x0, int x1, int y) |
dessine un segment horizontal (x0, y) -> (x1, y). Plus de détails... | |
void | gl4dpFilledCircle (int x0, int y0, int r) |
dessine un cercle plein centré en (x0, y0) de rayon r en utilisant l'algorithme de Bresenham'77. Plus de détails... | |
GLfloat * | gl4dpSDLSurfaceToLuminanceMap (SDL_Surface *s) |
convertie une surface SDL en un tableau de luminances comprises entre 0 et 1 (L = 0.299 * R + 0.587 * G + 0.114 * B). Le repère des y est remis vers le haut pour un usage GL. Plus de détails... | |
void | gl4dpCopyFromSDLSurfaceWithTransforms (SDL_Surface *s, const GLfloat scale[2], const GLfloat translate[2]) |
copie la surface SDL vers l'écran en cours ; peut zoomer/dézoomer/inverser et translater en utilisant scale et translate. Plus de détails... | |
void | gl4dpCopyFromSDLSurface (SDL_Surface *s) |
copie la surface SDL vers l'écran en cours en prenant 100% de l'écran. Plus de détails... | |
void | gl4dpMap (GLuint dstSId, GLuint srcSId, const GLfloat pRect[4], const GLfloat tRect[4], GLfloat rotation) |
plaque un écran sur un autre écran. Plus de détails... | |
Variables | |
static screen_node_t * | _screen_list = NULL |
static screen_node_t ** | _cur_screen = &_screen_list |
static GLuint | _pId = 0 |
identifiant du programme GLSL Plus de détails... | |
static GLuint | _quadId = 0 |
identifiant de la géométrie QUAD GL4Dummies Plus de détails... | |
static Uint32 | _cur_color = 0xFF0000FF |
La couleur en cours ; a modifier avec les fonctions setColor. Plus de détails... | |
Primitives de dessin 2D sur texture GL.
Nouvelle version, gère de multiple écrans. A été étendue pour s'intégrer à la bibliothèque demoHelper.
faire des version inline ou macro des fonctions aussi utilisées en interne pour plus de gain (exemple gl4dpPutPixel).
améliorer gl4dpMap.
Définition dans le fichier gl4dp.c.
typedef struct screen_node_t screen_node_t |
|
static |
ajoute un écran à la tête de liste d'écrans gérés.
w | la largeur de l'écran à créer. |
h | la hauteur de l'écran à créer. |
Références _cur_screen, _screen_list, screen_node_t::h, screen_node_t::isCPUToDate, screen_node_t::isGPUToDate, screen_node_t::next, screen_node_t::pixels, screen_node_t::tId, et screen_node_t::w.
Référencé par gl4dpInitScreenWithDimensions().
|
static |
Références _pId, _quadId, gl4dgDraw(), et screen_node_t::tId.
Référencé par gl4dpCopyFromSDLSurfaceWithTransforms(), gl4dpUpdateScreen(), et updateScreenFromGPU().
void gl4dpCircle | ( | int | x0, |
int | y0, | ||
int | r | ||
) |
dessine un cercle centré en (x0, y0) de rayon r en utilisant l'algorithme de Bresenham'77.
Références gl4dpPutPixel(), IN_SCREEN, et updateScreenFromGPU().
void gl4dpClearScreen | ( | void | ) |
Efface l'écran en mettant 0.
Références updateScreenFromGPU().
void gl4dpClearScreenWith | ( | Uint32 | color | ) |
void gl4dpCopyFromSDLSurface | ( | SDL_Surface * | s | ) |
copie la surface SDL vers l'écran en cours en prenant 100% de l'écran.
Références gl4dpCopyFromSDLSurfaceWithTransforms().
void gl4dpCopyFromSDLSurfaceWithTransforms | ( | SDL_Surface * | s, |
const GLfloat | scale[2], | ||
const GLfloat | translate[2] | ||
) |
copie la surface SDL vers l'écran en cours ; peut zoomer/dézoomer/inverser et translater en utilisant scale et translate.
Références A_MASK, B_MASK, drawTex(), G_MASK, R_MASK, et t0.
Référencé par gl4dpCopyFromSDLSurface().
void gl4dpDeleteScreen | ( | void | ) |
supprime l'écran et se repositionne sur le premier
Références _cur_screen, _screen_list, et screen_node_t::next.
void gl4dpFilledCircle | ( | int | x0, |
int | y0, | ||
int | r | ||
) |
dessine un cercle plein centré en (x0, y0) de rayon r en utilisant l'algorithme de Bresenham'77.
Références gl4dpHLine(), et updateScreenFromGPU().
Uint32 gl4dpGetColor | ( | void | ) |
GLuint gl4dpGetHeight | ( | void | ) |
retourne la hauteur de l'écran.
Référencé par gl4dpHLine().
Uint32 gl4dpGetPixel | ( | int | x, |
int | y | ||
) |
GLuint* gl4dpGetPixels | ( | void | ) |
GLuint gl4dpGetTextureId | ( | void | ) |
GLuint gl4dpGetWidth | ( | void | ) |
retourne la largeur de l'écran.
Référencé par gl4dpHLine().
void gl4dpHLine | ( | int | x0, |
int | x1, | ||
int | y | ||
) |
dessine un segment horizontal (x0, y) -> (x1, y).
Références gl4dpGetHeight(), gl4dpGetWidth(), gl4dpPutPixel(), MAX, MIN, et updateScreenFromGPU().
Référencé par gl4dpFilledCircle().
GLuint gl4dpInitScreen | ( | void | ) |
initialise (ou réinitialise) l'écran aux dimensions du viewport OpenGL, le lie à l'identifiant (OpenGL) de texture retourné.
Utilise gl4dpInitScreenWithDimensions.
Références gl4dpInitScreenWithDimensions().
GLuint gl4dpInitScreenWithDimensions | ( | GLuint | w, |
GLuint | h | ||
) |
initialise (ou réinitialise) l'écran aux dimensions w et h, le lie à l'identifiant (OpenGL) de texture retourné.
w | la largeur de la fenêtre/texture GL. |
h | la hauteur de la fenêtre/texture GL. |
Références _pId, _quadId, addScreen(), gl4dgGenQuadf(), gl4duCreateProgram(), screen_node_t::h, et screen_node_t::w.
Référencé par gl4dpInitScreen().
void gl4dpLine | ( | int | x0, |
int | y0, | ||
int | x1, | ||
int | y1 | ||
) |
dessine un segment (x0, y0) -> (x1, y1) de couleur _cur_color en utilisant l'algorithme de Bresenham'65.
Références gl4dpPutPixel(), IN_SCREEN, et updateScreenFromGPU().
void gl4dpMap | ( | GLuint | dstSId, |
GLuint | srcSId, | ||
const GLfloat | pRect[4], | ||
const GLfloat | tRect[4], | ||
GLfloat | rotation | ||
) |
plaque un écran sur un autre écran.
dstSId | identifiant de l'écran destination (sur lequel on plaque). |
srcSId | identifiant de l'écran source (qui sera plaqué). |
pRect | rectangle représentant la position (dans dstSId) à laquelle nous allons plaquer la source srcSId. |
tRect | reclangle représentant la quantité de surface copiée depuis srcSId - c'est les coordonnées de textures. |
rotation | angle de rotation en radians appliqué lors du placage. Le rectangle pRect tourne autour de son centre. |
Références _pId, gl4dpSetScreen(), et gl4dpUpdateScreen().
void gl4dpPutPixel | ( | int | x, |
int | y | ||
) |
met la couleur en cours à la coordonnée (x, y)
Références _cur_color, et updateScreenFromGPU().
Référencé par gl4dpCircle(), gl4dpHLine(), et gl4dpLine().
void gl4dpRect | ( | GLint * | rect | ) |
dessine un rectangle rect en utilisant la couleur en cours.
rect | le pointeur vers les quatre entiers positifs x,y (coin haut gauche du rectangle) et w,h (les dimensions du rectangle). |
Références _cur_color, et updateScreenFromGPU().
void gl4dpScreenHasChanged | ( | void | ) |
indique que le screen a été modifié côté mémoire centrale (CPU), qu'il sera donc nécessaire de mettre à jour la mémoire graphique (GPU) lors de l'appel à la fonction gl4dpUpdateScreen.
GLfloat* gl4dpSDLSurfaceToLuminanceMap | ( | SDL_Surface * | s | ) |
convertie une surface SDL en un tableau de luminances comprises entre 0 et 1 (L = 0.299 * R + 0.587 * G + 0.114 * B). Le repère des y est remis vers le haut pour un usage GL.
s | La surface SDL à convertir |
void gl4dpSetColor | ( | Uint32 | color | ) |
met dans _cur_color la couleur passee en argument.
Références _cur_color.
int gl4dpSetScreen | ( | GLuint | id | ) |
active comme écran courant l'écran dont l'id est passé en argument.
id | identifiant de l'écran. |
Références _cur_screen, _screen_list, et screen_node_t::tId.
Référencé par gl4dpMap().
void gl4dpUpdateScreen | ( | GLint * | rect | ) |
met à jour l'écran en envoyant la sous texture de dimensions rect à GL. Si rect vaut NULL, met à jour toute la texture.
rect | le pointeur vers les quatre entiers positifs x,y (coin haut gauche du rectangle) et w,h (les dimensions du rectangle). |
Références drawTex(), et updateScreenFromGPU().
Référencé par gl4dpMap().
|
static |
Références drawTex().
Référencé par gl4dpCircle(), gl4dpClearScreen(), gl4dpClearScreenWith(), gl4dpFilledCircle(), gl4dpGetPixel(), gl4dpHLine(), gl4dpLine(), gl4dpPutPixel(), gl4dpRect(), et gl4dpUpdateScreen().
|
static |
La couleur en cours ; a modifier avec les fonctions setColor.
Référencé par gl4dpGetColor(), gl4dpPutPixel(), gl4dpRect(), et gl4dpSetColor().
|
static |
Référencé par addScreen(), gl4dpDeleteScreen(), et gl4dpSetScreen().
|
static |
identifiant du programme GLSL
Référencé par drawTex(), gl4dpInitScreenWithDimensions(), et gl4dpMap().
|
static |
identifiant de la géométrie QUAD GL4Dummies
Référencé par drawTex(), et gl4dpInitScreenWithDimensions().
|
static |
Référencé par addScreen(), gl4dpDeleteScreen(), et gl4dpSetScreen().