Pipeline graphique
 Tout Structures de données Espaces de nommage Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Macros
Pipeline.h
Aller à la documentation de ce fichier.
1 #ifndef _PIPELINE
2 #define _PIPELINE
3 
4 #include <float.h>
5 #include "utils.h"
6 #include "libimg/pgm.h"
7 #include "ShaderBase.h"
8 using namespace Math;
9 
11 class Pipeline {
12 public:
13 
14  int sizeX;
15  int sizeY;
17  // vertex et index buffer
18  void *VertexBuffer;
19  unsigned int *IndexBuffer;
20 
21  unsigned int VertexBufferSize;
22  unsigned int IndexBufferSize;
23 
24  // shaders
26 
27  /*
28  * Pointeur vers la structure contenant les constantes uniformes du vertex shader. C'est ce pointeur qui est passé en troisiéme paramètre du * * vertex shader.
29  */
30  void *VSconst;
31 
32  /*
33  * Pointeur vers la structure contenant les constantes uniformes du pixel shader. C'est ce pointeur qui est passé en troisiéme paramètre du * * * pixel shader.
34  */
35  void *PSconst;
36 
37  //Sizeof de la structure d'entrée du vertex shader (sizeof de la structure sur laquelle pointe le premier paramètre du vertex shader)
38  unsigned int VSstride;
39 
40  // Sizeof de la structure d'entrée du pixel shader (sizeof de la structure sur laquelle pointe le premier paramètre du pixel shader)
41  unsigned int PSstride;
42 
43 
44  // internal memory
45  float *zBuffer; //Pointeur vers le z-buffer
47 
48  // render state
49  bool DoCull;
50  bool DoClip;
51  bool DoCCW;
52  bool Dothread;
53 
54  bool viewPoint;
55  bool viewMaille;
57 
58  std::vector <std::thread> m_thread;
59  std::vector <std::mutex *> m_mutex;
60  unsigned int nbMAXthread;
61 
62 
63 
64  Pipeline(int sx = 600,int sy= 600,bool dothread = true);
65  ~Pipeline();
66 
68  void setViewPoint(bool var);
69  void setViewMaille(bool var);
70  void setViewRemplisage(bool var);
71  void setCulling(bool var);
72  void setCliping(bool var);
73  void SetVertexBuffer(unsigned int VBsz, void *VB, unsigned int VSstride);
74  void SetIndexBuffer(unsigned int IBsz, unsigned int *IB);
75  void SetShader(ShaderBase *VS);
76 
78  unsigned char * getDisplay();
79  inline ShaderBase * getShader(){return shader;}
80 
82 
83  void DrawTriangles();
84  void AsemblageFacette(Sommet *somettransformer, bool debug = false);
85  void DiscretisationFacette(Sommet *somettransformer,FaceteEcran *facette);
86  static void threadRemplissage(Pipeline *monpipeline,Sommet *somettransformer,FaceteEcran *facette );
87  static void drawLineNaif(Sommet *somettransformer,Pipeline *monpipeline, FaceteEcran *facette, bool debug = false);
88  static void drawLine(Sommet *somettransformer,Pipeline *monpipeline, FaceteEcran *facette,bool debug = false);
89  static void Remplissage(Sommet *somettransformer,Pipeline *monpipeline,FaceteEcran *facette, bool debug = false);
90  static void OperationPixel(coord2d P,Pipeline *monpipeline,Sommet *somettransformer,FaceteEcran *facette, bool debug = false);
91 
93 
94 
95  bool IsOffScreen(int x, int y);
96  void ClearRenderTarget(defColor::color Couleur);
97  void ClearZBuffer(float Zmax=FLT_MAX);
98 
99 
100  void SaveRenderTarget(std::string fichier);
101  void SaveZBuffer(std::string name);
102 
103 };
104 
105 #endif
std::vector< std::thread > m_thread
Definition: Pipeline.h:58
ShaderBase * shader
Pointeur vers une classe shader.
Definition: Pipeline.h:25
bool DoCull
Definition: Pipeline.h:49
unsigned int VSstride
Definition: Pipeline.h:38
int sizeY
Taille en y de la fenêtre de rendu.
Definition: Pipeline.h:15
rgb * Display
Definition: Pipeline.h:46
ShaderBase * getShader()
Definition: Pipeline.h:79
float * zBuffer
Definition: Pipeline.h:45
bool viewPoint
Definition: Pipeline.h:54
unsigned int * IndexBuffer
Pointeur vers le tableau d'index.
Definition: Pipeline.h:19
bool Dothread
Definition: Pipeline.h:52
unsigned int nbMAXthread
Definition: Pipeline.h:60
structure pour les vecteurs 3D (de taille 3).
Definition: libMath.h:21
unsigned int PSstride
Definition: Pipeline.h:41
std::vector< std::mutex * > m_mutex
Definition: Pipeline.h:59
Definition: libMath.h:16
Classe de gestion du pipeline.
Definition: Pipeline.h:11
void * VertexBuffer
Pointeur vers le tableau de sommets.
Definition: Pipeline.h:18
void * PSconst
Definition: Pipeline.h:35
bool DoCCW
Definition: Pipeline.h:51
rgb backgroundcolor
Definition: Pipeline.h:16
bool viewMaille
Definition: Pipeline.h:55
bool viewRemplisage
Definition: Pipeline.h:56
unsigned int VertexBufferSize
Taille en octet du tableau de sommets (en octets).
Definition: Pipeline.h:21
int sizeX
Taille en x de la fenêtre de rendu.
Definition: Pipeline.h:14
void * VSconst
Definition: Pipeline.h:30
bool DoClip
Definition: Pipeline.h:50
unsigned int IndexBufferSize
Taille en octet du tableau d'index.
Definition: Pipeline.h:22
Definition: definition.h:60