zenilib: zenilib/jni/external/zenilib/zeni_graphics/Zeni/Material.h Source File

zenilib 0.5.3.0

- Main Page
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Material.h
Go to the documentation of this file.
1 /* This file is part of the Zenipex Library (zenilib).
2 * Copyright (C) 2011 Mitchell Keith Bloch (bazald).
3 *
4 * zenilib is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * zenilib is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public License
15 * along with zenilib. If not, see <http://www.gnu.org/licenses/>.
16 */
17
34 #ifndef ZENI_MATERIAL_H
35 #define ZENI_MATERIAL_H
36
37 #include <Zeni/Color.h>
38 #include <Zeni/String.h>
39
40 #ifndef DISABLE_GL
41 #if defined(REQUIRE_GL_ES)
42 #include <GLES/gl.h>
43 #else
44 #include <GL/glew.h>
45 #endif
46 #endif
47
48 #include <Zeni/Define.h>
49
50 namespace Zeni {
51
52 class ZENI_GRAPHICS_DLL Video_GL_Fixed;
53 class ZENI_GRAPHICS_DLL Video_GL_Shader;
54 class ZENI_GRAPHICS_DLL Video_DX9;
55
56 class ZENI_GRAPHICS_DLL Material {
57 public:
59 Material(const Color &ambient = ZENI_DEFAULT_MATERIAL_DIFFUSE,
60 const Color &diffuse = ZENI_DEFAULT_MATERIAL_DIFFUSE,
61 const Color &specular = ZENI_DEFAULT_MATERIAL_SPECULAR,
62 const Color &emissive = ZENI_DEFAULT_MATERIAL_EMISSIVE,
63 const float &power = ZENI_DEFAULT_MATERIAL_POWER,
64 const String &texture = "");
65 Material(const String &texture,
66 const Color &ambient_and_diffuse = ZENI_DEFAULT_MATERIAL_DIFFUSE);
67
68 // Accessors
69 inline float get_power() const;
70 float get_shininess() const;
71 inline const String & get_Texture() const;
72
73 // Modifiers
74 inline void set_power(const float &power);
75 void set_shininess(const float &shininess);
76 void set_Texture(const String &texture);
77
78 #ifndef DISABLE_GL_FIXED
79 void set(Video_GL_Fixed &screen) const;
80 void unset(Video_GL_Fixed &screen) const;
81 #endif
82
83 #ifndef DISABLE_GL_SHADER
84 void set(Video_GL_Shader &screen) const;
85 void unset(Video_GL_Shader &screen) const;
86 #endif
87
88 #ifndef DISABLE_DX9
89 void set(Video_DX9 &screen) const;
90 void unset(Video_DX9 &screen) const;
91 #endif
92
93 bool operator<(const Material &rhs) const;
94
95 bool operator==(const Material &rhs) const;
96
97 // Optimizers
98 void optimize_to_follow(const Material &rhs);
99 void optimize_to_precede(const Material &rhs);
100 void clear_optimization();
101
102 Color diffuse;
103 Color ambient;
104 Color specular;
105 Color emissive;
106
107 private:
108 float m_power;
109
110 String m_texture;
111 mutable unsigned long m_texture_id;
112
113 unsigned int m_optimization;
114 };
115
116 }
117
118 #include <Zeni/Undefine.h>
119
120 #endif
Zeni::Video_DX9
The Direct3D9 Rendering System.
Definition: Video_DX9.h:62
ZENI_DEFAULT_MATERIAL_EMISSIVE
#define ZENI_DEFAULT_MATERIAL_EMISSIVE
Definition: Define.h:46
Zeni::Material::specular
Color specular
The specular Color.
Definition: Material.h:104
operator<
bool operator<(const TiXmlString &a, const TiXmlString &b)
Definition: tinystr.h:273
pp::operator==
bool operator==(const SourceLocation &lhs, const SourceLocation &rhs)
Definition: SourceLocation.h:27
ZENI_DEFAULT_MATERIAL_SPECULAR
#define ZENI_DEFAULT_MATERIAL_SPECULAR
Definition: Define.h:45
Zeni::Material
An Abstraction of a Material.
Definition: Material.h:56
Undefine.h
Zeni::String
Definition: String.h:29
ZENI_DEFAULT_MATERIAL_DIFFUSE
#define ZENI_DEFAULT_MATERIAL_DIFFUSE
Definition: Define.h:44
Zeni::Video_GL_Fixed
The OpenGL Rendering System.
Definition: Video_GL_Fixed.h:70
Define.h
Zeni::Material::ambient
Color ambient
The ambient Color.
Definition: Material.h:103
Zeni::Video_GL_Shader
The OpenGL Rendering System.
Definition: Video_GL_Shader.h:70
Zeni::Material::diffuse
Color diffuse
The diffuse Color.
Definition: Material.h:102
Zeni::Material::emissive
Color emissive
The emissive Color.
Definition: Material.h:105
texture
GLenum GLenum GLuint texture
Definition: gl2ext.h:850
ZENI_DEFAULT_MATERIAL_POWER
#define ZENI_DEFAULT_MATERIAL_POWER
Definition: Define.h:47
String.h
Color.h
Zeni::Color
Color.
Definition: Color.h:41