gKit2 light
Loading...
Searching...
No Matches
Materials Struct Reference

#include <materials.h>

Public Member Functions

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

Public Attributes

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

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.

Constructor & Destructor Documentation

◆ Materials()

Materials::Materials ( )
inline

Definition at line 51 of file materials.h.

std::vector< std::string > names
noms des matieres.
Definition materials.h:46
std::vector< std::string > texture_filenames
noms des textures a charger.
Definition materials.h:48
int default_material_id
indice de la matiere par defaut dans materials.
Definition materials.h:49
std::vector< Material > materials
description des matieres.
Definition materials.h:47

Member Function Documentation

◆ clear()

void Materials::clear ( )
inline

Definition at line 53 of file materials.h.

54 {
55 names.clear();
56 materials.clear();
57 texture_filenames.clear();
59 }

◆ insert()

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

ajoute une matiere.

Definition at line 62 of file materials.h.

63 {
64 int id= find(name);
65 if(id == -1)
66 {
67 id= int(materials.size());
68 names.push_back(name);
69 materials.push_back(material);
70 }
71 assert(materials.size() == names.size());
72 return id;
73 }
int find(const char *name)
recherche une matiere avec son nom. renvoie son indice dans materials, ou -1.
Definition materials.h:88
const Material & material(const int id) const
renvoie la ieme matiere.
Definition materials.h:110
const char * name(const int id) const
renvoie le nom de la ieme matiere.
Definition materials.h:105

◆ insert_texture()

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

ajoute une texture / nom du fichier.

Definition at line 76 of file materials.h.

77 {
78 int id= find_texture(filename);
79 if(id == -1)
80 {
81 id= int(texture_filenames.size());
82 texture_filenames.push_back(filename);
83 }
84 return id;
85 }
int find_texture(const char *filename)
renvoie l'indice d'une texture, si elle existe.
Definition materials.h:152
const char * filename(const int id) const
renvoie le nom de fichier d'une texture.
Definition materials.h:149

◆ find()

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

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

Definition at line 88 of file materials.h.

89 {
90 if(name == nullptr || name[0] == 0)
91 return -1;
92
93 for(int i= 0; i < int(names.size()); i++)
94 {
95 if(names[i] == name)
96 return i;
97 }
98 return -1;
99 }

◆ count()

int Materials::count ( ) const
inline

nombre de matieres.

Definition at line 102 of file materials.h.

102{ 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 105 of file materials.h.

105{ 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 107 of file materials.h.

107{ 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 110 of file materials.h.

110{ 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 112 of file materials.h.

112{ 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 115 of file materials.h.

115{ return material(id); }

◆ operator()() [2/2]

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

renvoie la ieme matiere.

Definition at line 117 of file materials.h.

117{ 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 120 of file materials.h.

121 {
122 int id= find(name);
123 if(id != -1)
124 // renvoie la matiere
125 return materials[id];
126 else
127 // ou renvoie la matiere par defaut...
128 return default_material();
129 }
const Material & default_material()
renvoie une matiere par defaut.
Definition materials.h:132

◆ default_material()

const Material & Materials::default_material ( )
inline

renvoie une matiere par defaut.

Definition at line 132 of file materials.h.

133 {
135 }
int default_material_index()
indice de la matiere par defaut dans le tableau materials.
Definition materials.h:138

◆ default_material_index()

int Materials::default_material_index ( )
inline

indice de la matiere par defaut dans le tableau materials.

Definition at line 138 of file materials.h.

139 {
140 if(default_material_id == -1)
141 default_material_id= insert(Material(Color(0.8)), "default");
142
143 return default_material_id;
144 }
int insert(const Material &material, const char *name)
ajoute une matiere.
Definition materials.h:62

◆ filename_count()

int Materials::filename_count ( ) const
inline

renvoie le nombre de noms de fichiers de textures.

Definition at line 147 of file materials.h.

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

◆ filename()

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

renvoie le nom de fichier d'une texture.

Definition at line 149 of file materials.h.

149{ if(id < 0) return nullptr; assert(id < int(texture_filenames.size())); 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 152 of file materials.h.

153 {
154 if(filename == nullptr || filename[0] == 0)
155 return -1;
156
157 for(int i= 0; i < int(texture_filenames.size()); i++)
158 {
160 return i;
161 }
162 return -1;
163 }

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: