gKit2 light
Public Member Functions | Public Attributes | List of all members
Materials Struct Reference

#include <materials.h>

Public Member Functions

int insert (const Material &material, const char *name)
 ajoute une matiere. More...
 
int insert_texture (const char *filename)
 ajoute une texture / nom du fichier. More...
 
int find (const char *name)
 recherche une matiere avec son nom. renvoie son indice dans materials, ou -1. More...
 
int count () const
 nombre de matieres. More...
 
const char * name (const int id) const
 renvoie le nom de la ieme matiere. More...
 
const char * name (const int id)
 renvoie le nom de la ieme matiere. More...
 
const Materialmaterial (const int id) const
 renvoie la ieme matiere. More...
 
Materialmaterial (const int id)
 renvoie la ieme matiere. More...
 
const Materialoperator() (const int id) const
 renvoie la ieme matiere. More...
 
Materialoperator() (const int id)
 renvoie la ieme matiere. More...
 
const Materialmaterial (const char *name)
 renvoie la matiere 'name', si elle existe. ou la matiere par defaut. More...
 
const Materialdefault_material ()
 renvoie une matiere par defaut. More...
 
int default_material_index ()
 indice de la matiere par defaut dans le tableau materials. More...
 
int filename_count () const
 renvoie le nombre de noms de fichiers de textures. More...
 
const char * filename (const int id) const
 renvoie le nombre de noms de fichiers de textures. More...
 
int find_texture (const char *filename)
 renvoie l'indice d'une texture, si elle existe. More...
 

Public Attributes

std::vector< std::string > names
 noms des matieres. More...
 
std::vector< Materialmaterials
 description des matieres. More...
 
std::vector< std::string > texture_filenames
 noms des textures a charger. More...
 
int default_material_id
 indice de la matiere par defaut dans materials. More...
 

Detailed Description

ensemble de matieres d'un Mesh. + ensemble de textures referencees par les descriptions de matieres.

names[id] est le nom de la matiere materials[id], utiliser name() et material() pour recuperer la description d'une matiere d'indice id.

les textures sont indexees separemment. chaque matiere reference une ou plusieurs textures, par exemple diffuse_texture et specular_texture. ces indices correspondent aux noms de fichiers (uniques) des images à charger : filename() renvoie le nom du fichier. filename( material.diffuse_texture ) renvoie le nom de l'image à charger qui correspond à la texture diffuse de la matiere.

pourquoi cette indexation supplementaire ? pour eviter de charger plusieurs fois une image / creer plusieurs fois une texture. il est aussi tres simple de creer un tableau avec les textures openGL indexe de la meme maniere.

Definition at line 44 of file materials.h.

Member Function Documentation

◆ insert()

int Materials::insert ( const Material material,
const char *  name 
)
inline

ajoute une matiere.

Definition at line 54 of file materials.h.

55  {
56  int id= find(name);
57  if(id == -1)
58  {
59  id= int(materials.size());
60  names.push_back(name);
61  materials.push_back(material);
62  }
63  assert(materials.size() == names.size());
64  return id;
65  }
std::vector< std::string > names
noms des matieres.
Definition: materials.h:46
const Material & material(const int id) const
renvoie la ieme matiere.
Definition: materials.h:102
int find(const char *name)
recherche une matiere avec son nom. renvoie son indice dans materials, ou -1.
Definition: materials.h:80
std::vector< Material > materials
description des matieres.
Definition: materials.h:47
const char * name(const int id) const
renvoie le nom de la ieme matiere.
Definition: materials.h:97

◆ insert_texture()

int Materials::insert_texture ( const char *  filename)
inline

ajoute une texture / nom du fichier.

Definition at line 68 of file materials.h.

69  {
70  int id= find_texture(filename);
71  if(id == -1)
72  {
73  id= int(texture_filenames.size());
74  texture_filenames.push_back(filename);
75  }
76  return id;
77  }
int find_texture(const char *filename)
renvoie l'indice d'une texture, si elle existe.
Definition: materials.h:144
std::vector< std::string > texture_filenames
noms des textures a charger.
Definition: materials.h:48
const char * filename(const int id) const
renvoie le nombre de noms de fichiers de textures.
Definition: materials.h:141

◆ find()

int Materials::find ( const char *  name)
inline

recherche une matiere avec son nom. renvoie son indice dans materials, ou -1.

Definition at line 80 of file materials.h.

81  {
82  if(name == nullptr || name[0] == 0)
83  return -1;
84 
85  for(int i= 0; i < int(names.size()); i++)
86  {
87  if(names[i] == name)
88  return i;
89  }
90  return -1;
91  }

◆ count()

int Materials::count ( ) const
inline

nombre de matieres.

Definition at line 94 of file materials.h.

94 { return int(materials.size()); }

◆ name() [1/2]

const char* Materials::name ( const int  id) const
inline

renvoie le nom de la ieme matiere.

Definition at line 97 of file materials.h.

97 { assert(id != -1); assert(id < int(materials.size())); return names[id].c_str(); }

◆ name() [2/2]

const char* Materials::name ( const int  id)
inline

renvoie le nom de la ieme matiere.

Definition at line 99 of file materials.h.

99 { assert(id != -1); assert(id < int(materials.size())); return names[id].c_str(); }

◆ material() [1/3]

const Material& Materials::material ( const int  id) const
inline

renvoie la ieme matiere.

Definition at line 102 of file materials.h.

102 { assert(id != -1); assert(id < int(materials.size())); return materials[id]; }

◆ material() [2/3]

Material& Materials::material ( const int  id)
inline

renvoie la ieme matiere.

Definition at line 104 of file materials.h.

104 { assert(id != -1); assert(id < int(materials.size())); return materials[id]; }

◆ operator()() [1/2]

const Material& Materials::operator() ( const int  id) const
inline

renvoie la ieme matiere.

Definition at line 107 of file materials.h.

107 { return material(id); }

◆ operator()() [2/2]

Material& Materials::operator() ( const int  id)
inline

renvoie la ieme matiere.

Definition at line 109 of file materials.h.

109 { return material(id); }

◆ material() [3/3]

const Material& Materials::material ( const char *  name)
inline

renvoie la matiere 'name', si elle existe. ou la matiere par defaut.

Definition at line 112 of file materials.h.

113  {
114  int id= find(name);
115  if(id != -1)
116  // renvoie la matiere
117  return materials[id];
118  else
119  // ou renvoie la matiere par defaut...
120  return default_material();
121  }
const Material & default_material()
renvoie une matiere par defaut.
Definition: materials.h:124

◆ default_material()

const Material& Materials::default_material ( )
inline

renvoie une matiere par defaut.

Definition at line 124 of file materials.h.

125  {
127  }
int default_material_index()
indice de la matiere par defaut dans le tableau materials.
Definition: materials.h:130

◆ default_material_index()

int Materials::default_material_index ( )
inline

indice de la matiere par defaut dans le tableau materials.

Definition at line 130 of file materials.h.

131  {
132  if(default_material_id == -1)
133  default_material_id= insert(Material(Color(0.8)), "default");
134 
135  return default_material_id;
136  }
representation d'une couleur (rgba) transparente ou opaque.
Definition: color.h:14
int insert(const Material &material, const char *name)
ajoute une matiere.
Definition: materials.h:54
int default_material_id
indice de la matiere par defaut dans materials.
Definition: materials.h:49

◆ filename_count()

int Materials::filename_count ( ) const
inline

renvoie le nombre de noms de fichiers de textures.

Definition at line 139 of file materials.h.

139 { return int(texture_filenames.size()); }

◆ filename()

const char* Materials::filename ( const int  id) const
inline

renvoie le nombre de noms de fichiers de textures.

Definition at line 141 of file materials.h.

141 { return texture_filenames[id].c_str(); }

◆ find_texture()

int Materials::find_texture ( const char *  filename)
inline

renvoie l'indice d'une texture, si elle existe.

Definition at line 144 of file materials.h.

145  {
146  if(filename == nullptr || filename[0] == 0)
147  return -1;
148 
149  for(int i= 0; i < int(texture_filenames.size()); i++)
150  {
151  if(texture_filenames[i] == filename)
152  return i;
153  }
154  return -1;
155  }

Member Data Documentation

◆ names

std::vector<std::string> Materials::names

noms des matieres.

Definition at line 46 of file materials.h.

◆ materials

std::vector<Material> Materials::materials

description des matieres.

Definition at line 47 of file materials.h.

◆ texture_filenames

std::vector<std::string> Materials::texture_filenames

noms des textures a charger.

Definition at line 48 of file materials.h.

◆ default_material_id

int Materials::default_material_id

indice de la matiere par defaut dans materials.

Definition at line 49 of file materials.h.


The documentation for this struct was generated from the following file: