GL4Dummies  0.1.7
Référence du fichier gl4dfConversion.c

filres de conversions de couleurs à partir d'une texture ou l'écran vers une texture ou l'écran. Plus de détails...

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "gl4du.h"
#include "gl4df.h"
#include "gl4dfCommon.h"
Graphe des dépendances par inclusion de gl4dfConversion.c:

Aller au code source de ce fichier.

Fonctions

void gl4dfConvFrame2Tex (GLuint *out)
 Envoie le framebuffer actif (ou l'écran) vers une texture. Plus de détails...
 
void gl4dfConvTex2Frame (GLuint in)
 Envoie une texture identifiée par in vers le framebuffer actif (ou écran). Plus de détails...
 
void gl4dfConvTex2Tex (GLuint in, GLuint out, GLboolean flipV)
 Copie la texture identifiée par in dans out. Le mode d'interpolation (par défaut GL_NEAREST) est à renseigner à l'aide de la fonction gl4dfConvSetFilter. Plus de détails...
 
void gl4dfConvSetFilter (GLenum filter)
 Indique le filtre à utiliser en cas d'interpolation du Blit. Le filtre par défaut est GL_NEAREST. Plus de détails...
 

Variables

static GLenum _filter = GL_NEAREST
 
static GLuint _pId = 0
 

Description détaillée

filres de conversions de couleurs à partir d'une texture ou l'écran vers une texture ou l'écran.

Auteur
Farès BELHADJ amsi@.nosp@m.ai.u.nosp@m.niv-p.nosp@m.aris.nosp@m.8.fr
Date
May 27, 2016

Définition dans le fichier gl4dfConversion.c.

Documentation des fonctions

◆ gl4dfConvFrame2Tex()

void gl4dfConvFrame2Tex ( GLuint *  out)

Envoie le framebuffer actif (ou l'écran) vers une texture.

Paramètres
outpointeur vers la variable contenant l'identifiant de texture dans laquelle le framebuffer (ou l'écran) sera copié. Si cette identifiant (*out) est nul (0), copie le framebuffer (ou l'écran) vers une nouvelle texture dont l'identifiant sera écrit dans out et devra être libéré avec glDeleteTextures. Cette nouvelle texture aura les dimensions (largeur et hauteur) du viewport courant et le filtre utilisé est celui choisi à l'aide de gl4dfConvSetFilter.
21  {
22  GLint vp[4], w, h, cfbo, ctex;
23  GLuint fbo;
24  glGetIntegerv(GL_TEXTURE_BINDING_2D, &ctex);
25  glGetIntegerv(GL_FRAMEBUFFER_BINDING, &cfbo);
26  glGetIntegerv(GL_VIEWPORT, vp);
27  if(*out == 0) {
28  w = vp[2];// - vp[0];
29  h = vp[3];// - vp[1];
30  glGenTextures(1, out);
31  glBindTexture(GL_TEXTURE_2D, *out);
32  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, _filter);
33  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, _filter);
34  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
35  } else {
36  glBindTexture(GL_TEXTURE_2D, *out);
37  glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &w);
38  glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &h);
39  }
40  glGenFramebuffers(1, &fbo);
41  glBindFramebuffer(GL_READ_FRAMEBUFFER, (GLuint)cfbo);
42  glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);
43  glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, *out, 0);
44  glBlitFramebuffer(vp[0], vp[1], vp[0] + vp[2], vp[1] + vp[3], 0, 0, w, h, GL_COLOR_BUFFER_BIT, _filter);
45  glDeleteFramebuffers(1, &fbo);
46  glBindTexture(GL_TEXTURE_2D, (GLuint)ctex);
47  glBindFramebuffer(GL_FRAMEBUFFER, (GLuint)cfbo);
48 }

Références _filter.

Référencé par blurffunc(), cannyffunc(), fractalPaintingffunc(), medianffunc(), opffunc(), scatteringffunc(), et sobelffunc().

◆ gl4dfConvSetFilter()

void gl4dfConvSetFilter ( GLenum  filter)

Indique le filtre à utiliser en cas d'interpolation du Blit. Le filtre par défaut est GL_NEAREST.

Paramètres
filterest le filtre d'interpolation (GL_LINEAR ou GL_NEAREST).
101  {
102  _filter = filter;
103 }

Références _filter.

Référencé par fractalPaintingffunc().

◆ gl4dfConvTex2Frame()

void gl4dfConvTex2Frame ( GLuint  in)

Envoie une texture identifiée par in vers le framebuffer actif (ou écran).

Paramètres
inidentifiant OpenGL de la texture à copier dans le framebuffer (ou l'écran).
50  {
51  GLint vp[4], w, h, cfbo, ctex;
52  GLuint fbo;
53  glGetIntegerv(GL_TEXTURE_BINDING_2D, &ctex);
54  glGetIntegerv(GL_FRAMEBUFFER_BINDING, &cfbo);
55  glGetIntegerv(GL_VIEWPORT, vp);
56 
57  glBindTexture(GL_TEXTURE_2D, in);
58  glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &w);
59  glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &h);
60 
61  glGenFramebuffers(1, &fbo);
62  glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo);
63  glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, in, 0);
64  glBindFramebuffer(GL_DRAW_FRAMEBUFFER, (GLuint)cfbo);
65  glBlitFramebuffer(0, 0, w, h, vp[0], vp[1], vp[0] + vp[2], vp[1] + vp[3], GL_COLOR_BUFFER_BIT, _filter);
66 
67  glDeleteFramebuffers(1, &fbo);
68  glBindTexture(GL_TEXTURE_2D, (GLuint)ctex);
69  glBindFramebuffer(GL_FRAMEBUFFER, (GLuint)cfbo);
70 }

Références _filter, et in().

◆ gl4dfConvTex2Tex()

void gl4dfConvTex2Tex ( GLuint  in,
GLuint  out,
GLboolean  flipV 
)

Copie la texture identifiée par in dans out. Le mode d'interpolation (par défaut GL_NEAREST) est à renseigner à l'aide de la fonction gl4dfConvSetFilter.

Paramètres
inidentifiant GL de la texture en entrée.
outidentifiant GL de la texture en sortie.
flipVindique s'il est nécessaire d'effectuer un mirroir vertical lors de la copie.
Voir également
gl4dfConvSetFilter
72  {
73  GLint inw, inh, outw, outh, ctex, cfbo;
74  GLuint fbo[2];
75  glGetIntegerv(GL_TEXTURE_BINDING_2D, &ctex);
76  glGetIntegerv(GL_FRAMEBUFFER_BINDING, &cfbo);
77 
78  glBindTexture(GL_TEXTURE_2D, in);
79  glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &inw);
80  glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &inh);
81  glBindTexture(GL_TEXTURE_2D, out);
82  glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &outw);
83  glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &outh);
84 
85  glGenFramebuffers(2, fbo);
86  glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo[0]);
87  glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, in, 0);
88  glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo[1]);
89  glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, out, 0);
90 
91  if(flipV)
92  glBlitFramebuffer(0, 0, inw, inh, 0, outh, outw, 0, GL_COLOR_BUFFER_BIT, _filter);
93  else
94  glBlitFramebuffer(0, 0, inw, inh, 0, 0, outw, outh, GL_COLOR_BUFFER_BIT, _filter);
95 
96  glDeleteFramebuffers(2, fbo);
97  glBindTexture(GL_TEXTURE_2D, (GLuint)ctex);
98  glBindFramebuffer(GL_FRAMEBUFFER, (GLuint)cfbo);
99 }

Références _filter, et in().

Référencé par cannyffunc(), fractalPaintingffunc(), medianffunc(), opffunc(), scatteringffunc(), et sobelffunc().

Documentation des variables

◆ _filter

GLenum _filter = GL_NEAREST
static

◆ _pId

GLuint _pId = 0
static
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
_filter
static GLenum _filter
Definition: gl4dfConversion.c:18