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

Revision 2819, 1.7 KB checked in by mattausch, 16 years ago (diff)
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;
13
14RgbaColor RandomColor(float a, float b)
15{
16        return RgbaColor(a + Random(b), a + Random(b), a + Random(b), 1);
17}
18
19
20void Material::InitMaterial()
21{
22        mTexture = NULL;
23        mAlphaTestEnabled = false;
24
25        mAmbientColor = RgbaColor(0.2f, 0.2f, 0.2f, 1.0f);
26        mDiffuseColor = RgbaColor(1.0f, 1.0f, 1.0f, 1.0f);
27        mSpecularColor = RgbaColor(.0f, .0f, .0f, 1.0f);
28        mEmmisiveColor = RgbaColor(.0f, .0f, .0f, 1.0f);
29}
30
31
32Material::Material()
33{
34        InitMaterial();
35}
36
37
38Material::Material(const RgbaColor &color):
39mDiffuseColor(color),
40mAmbientColor(color),
41mSpecularColor(0, 0, 0, 1),
42mTexture(NULL)
43{
44}
45
46
47Material RandomMaterial()
48{
49        float a = 0.1f;
50        float b = 0.9f;
51
52        Material m;
53        m.mDiffuseColor = RandomColor(a, b);
54
55        return m;
56}
57
58
59//void Material::Render(RenderState *state)
60void Material::Render(RenderState *state)
61{
62        state->SetState(mTexture != NULL, mAlphaTestEnabled);
63
64        if (mTexture)
65        {
66                mTexture->Bind();
67                cgGLSetParameter4f(sDiffuseTexParam, mDiffuseColor.r, mDiffuseColor.g, mDiffuseColor.b, mDiffuseColor.a);
68        }
69        else
70        {
71                cgGLSetParameter4f(sDiffuseParam, mDiffuseColor.r, mDiffuseColor.g, mDiffuseColor.b, mDiffuseColor.a);
72                glBindTexture(GL_TEXTURE_2D, 0);
73        }
74
75        glMaterialfv(GL_FRONT, GL_AMBIENT, (float *)&mAmbientColor.r);
76        glMaterialfv(GL_FRONT, GL_DIFFUSE, (float *)&mDiffuseColor.r);
77        glMaterialfv(GL_FRONT, GL_EMISSION, (float *)&mEmmisiveColor.r);
78        glMaterialfv(GL_FRONT, GL_SPECULAR, (float *)&mSpecularColor.r);
79}
80
81
82}
Note: See TracBrowser for help on using the repository browser.