source: GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Material.cpp @ 2822

Revision 2822, 2.1 KB checked in by mattausch, 16 years ago (diff)

worked on deferred shading

Line 
1#include "common.h"
2#include "Material.h"
3#include "Texture.h"
4#include "glInterface.h"
5#include "RenderState.h"
6
7
8namespace CHCDemoEngine
9{
10
11CGparameter Material::sDiffuseParam;
12CGparameter Material::sDiffuseTexParam;
13CGparameter Material::sAmbientParam;
14CGparameter Material::sAmbientTexParam;
15
16
17RgbaColor RandomColor(float a, float b)
18{
19        return RgbaColor(a + Random(b), a + Random(b), a + Random(b), 1);
20}
21
22
23void Material::InitMaterial()
24{
25        mTexture = NULL;
26        mAlphaTestEnabled = false;
27
28        mAmbientColor = RgbaColor(0.2f, 0.2f, 0.2f, 1.0f);
29        mDiffuseColor = RgbaColor(1.0f, 1.0f, 1.0f, 1.0f);
30        mSpecularColor = RgbaColor(.0f, .0f, .0f, 1.0f);
31        mEmmisiveColor = RgbaColor(.0f, .0f, .0f, 1.0f);
32}
33
34
35Material::Material()
36{
37        InitMaterial();
38}
39
40
41Material::Material(const RgbaColor &color):
42mDiffuseColor(color),
43mAmbientColor(color),
44mSpecularColor(0, 0, 0, 1),
45mTexture(NULL)
46{
47}
48
49
50Material RandomMaterial()
51{
52        float a = 0.1f;
53        float b = 0.9f;
54
55        Material m;
56        m.mDiffuseColor = RandomColor(a, b);
57
58        return m;
59}
60
61
62//void Material::Render(RenderState *state)
63void Material::Render(RenderState *state)
64{
65        state->SetState(mTexture != NULL, mAlphaTestEnabled);
66
67        if (mTexture)
68        {
69                mTexture->Bind();
70
71                cgGLSetParameter4f(sAmbientTexParam,
72                                                   mEmmisiveColor.r,
73                                                   mEmmisiveColor.g,
74                                                   mEmmisiveColor.b,
75                                                   mEmmisiveColor.a);
76
77                cgGLSetParameter4f(sDiffuseTexParam, mDiffuseColor.r, mDiffuseColor.g, mDiffuseColor.b, mDiffuseColor.a);
78        }
79        else
80        {
81                cgGLSetParameter4f(sAmbientParam,
82                                                   mEmmisiveColor.r,
83                                                   mEmmisiveColor.g,
84                                                   mEmmisiveColor.b,
85                                                   mEmmisiveColor.a);
86
87                cgGLSetParameter4f(sDiffuseParam, mDiffuseColor.r, mDiffuseColor.g, mDiffuseColor.b, mDiffuseColor.a);
88               
89                glBindTexture(GL_TEXTURE_2D, 0);
90        }
91
92        glMaterialfv(GL_FRONT, GL_AMBIENT, (float *)&mAmbientColor.r);
93        glMaterialfv(GL_FRONT, GL_DIFFUSE, (float *)&mDiffuseColor.r);
94        glMaterialfv(GL_FRONT, GL_EMISSION, (float *)&mEmmisiveColor.r);
95        glMaterialfv(GL_FRONT, GL_SPECULAR, (float *)&mSpecularColor.r);
96}
97
98
99}
Note: See TracBrowser for help on using the repository browser.