PGR Copakond OpenGL Engine - Bowling
Loading...
Searching...
No Matches
material.h
Go to the documentation of this file.
1#ifndef PGR_SEM_COPAKOND_MATERIAL_H
2#define PGR_SEM_COPAKOND_MATERIAL_H
3
4#include "../pgr-portable.h"
5
6#define DEFAULT_AMBIENT glm::vec3(1.0f, 1.0f, 1.0f)
7#define DEFAULT_DIFFUSE glm::vec3(1.0f, 1.0f, 1.0f)
8#define DEFAULT_SPECULAR glm::vec3(0.0f, 0.0f, 0.0f)
9#define DEFAULT_ALPHA 1.0f
10#define DEFAULT_SHININESS 32.0f
11
12namespace copakond {
14 class Material {
15 protected:
16 glm::vec3 _ambient;
17 glm::vec3 _diffuse;
18 glm::vec3 _specular;
20 float _alpha;
21
22 GLuint _diffuseTexture = 0;
23 GLuint _specularTexture = 0;
25 GLuint _alphaTexture = 0;
26 GLuint _normalTexture = 0;
27
33
34 bool _isTextLabel = false;
35
36 void constructor(const glm::vec3 &ambient, const glm::vec3 &diffuse, const glm::vec3 &specular, float shininess, float alpha);
37
38 public:
39 Material();
40 Material(const glm::vec3 &ambient, const glm::vec3 &diffuse, const glm::vec3 &specular);
41 Material(const glm::vec3 &ambient, const glm::vec3 &diffuse, const glm::vec3 &specular, float shininess);
42 Material(const glm::vec3 &ambient, const glm::vec3 &diffuse, const glm::vec3 &specular, float shininess, float alpha);
43 ~Material();
44
45 // getters and setters
46 glm::vec3 &ambient() { return _ambient; }
47 glm::vec3 &diffuse() { return _diffuse; }
48 glm::vec3 &specular() { return _specular; }
49 float &shininess() { return _shininess; }
50 float &alpha() { return _alpha; }
51
52 // textures managers
58 void setDiffuseTexture(const std::string &textureFile, bool warpTexture = false, bool mipMap = true);
59 bool hasDiffuseTexture() const { return _hasDiffuseTexture; }
61
62 void setSpecularTexture(const std::string &textureFile);
63 bool hasSpecularTexture() const { return _hasSpecularTexture; }
65
66 void setShininessTexture(const std::string &textureFile);
69
70 void setAlphaTexture(const std::string &textureFile);
71 bool hasAlphaTexture() const { return _hasAlphaTexture; }
73
74 void setNormalTexture(const std::string &textureFile);
75 bool hasNormalTexture() const { return _hasNormalTexture; }
77
78 GLuint diffuseTextureUniform() const { return _diffuseTexture; }
79 GLuint specularTextureUniform() const { return _specularTexture; }
80 GLuint shininessTextureUniform() const { return _shininessTexture; }
81 GLuint alphaTextureUniform() const { return _alphaTexture; }
82 GLuint normalTextureUniform() const { return _normalTexture; }
83
84 void setAlpha(float alpha) { _alpha = alpha; }
85 float getAlpha() const { return _alpha; }
86
87 void setIsTextLabel(bool state) { _isTextLabel = state; }
88 bool isTextLabel() const { return _isTextLabel; }
89
90 };
91}
92
93#endif //PGR_SEM_COPAKOND_MATERIAL_H
glm::vec3 _specular
Definition material.h:18
bool hasSpecularTexture() const
Definition material.h:63
void clearNormalTexture()
Definition material.h:76
void setShininessTexture(const std::string &textureFile)
Definition material.cpp:53
bool _hasDiffuseTexture
Definition material.h:28
GLuint _shininessTexture
Definition material.h:24
float & alpha()
Definition material.h:50
void clearAlphaTexture()
Definition material.h:72
void setSpecularTexture(const std::string &textureFile)
Definition material.cpp:45
glm::vec3 & diffuse()
Definition material.h:47
void setNormalTexture(const std::string &textureFile)
Definition material.cpp:69
GLuint _normalTexture
Definition material.h:26
bool hasDiffuseTexture() const
Definition material.h:59
float _shininess
Definition material.h:19
bool _hasSpecularTexture
Definition material.h:29
bool hasShininessTexture() const
Definition material.h:67
bool isTextLabel() const
Definition material.h:88
void clearDiffuseTexture()
Definition material.h:60
void constructor(const glm::vec3 &ambient, const glm::vec3 &diffuse, const glm::vec3 &specular, float shininess, float alpha)
Definition material.cpp:4
bool _isTextLabel
Definition material.h:34
GLuint _specularTexture
Definition material.h:23
GLuint normalTextureUniform() const
Definition material.h:82
void setIsTextLabel(bool state)
Definition material.h:87
glm::vec3 & ambient()
Definition material.h:46
float & shininess()
Definition material.h:49
GLuint alphaTextureUniform() const
Definition material.h:81
bool hasAlphaTexture() const
Definition material.h:71
void setDiffuseTexture(const std::string &textureFile, bool warpTexture=false, bool mipMap=true)
Loads and binds a diffuse texture map.
Definition material.cpp:29
void clearSpecularTexture()
Definition material.h:64
float getAlpha() const
Definition material.h:85
void clearShininessTexture()
Definition material.h:68
glm::vec3 & specular()
Definition material.h:48
glm::vec3 _ambient
Definition material.h:16
GLuint _alphaTexture
Definition material.h:25
bool _hasShininessTexture
Definition material.h:30
bool _hasAlphaTexture
Definition material.h:31
bool hasNormalTexture() const
Definition material.h:75
GLuint diffuseTextureUniform() const
Definition material.h:78
void setAlphaTexture(const std::string &textureFile)
Definition material.cpp:61
GLuint shininessTextureUniform() const
Definition material.h:80
GLuint specularTextureUniform() const
Definition material.h:79
glm::vec3 _diffuse
Definition material.h:17
~Material()
Definition material.cpp:21
bool _hasNormalTexture
Definition material.h:32
Material()
Definition material.cpp:77
GLuint _diffuseTexture
Definition material.h:22
void setAlpha(float alpha)
Definition material.h:84
float _alpha
Definition material.h:20
PGR Semestral work with sample scenes and bowling. doxygen was generated with a help of LLM.
Definition bezier.cpp:3