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

Revision 3038, 1.9 KB checked in by mattausch, 16 years ago (diff)

unified shader stuff, but phreetham sky not working anymore for forward rendering

Line 
1#include "common.h"
2#include "Material.h"
3#include "Texture.h"
4#include "glInterface.h"
5#include "RenderState.h"
6#include "ShaderProgram.h"
7
8using namespace std;
9
10
11namespace CHCDemoEngine
12{
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        mCullFaceEnabled = true;
25       
26        mGPUVertexParameters = NULL;
27        mVertexProgram = NULL;
28       
29        mGPUFragmentParameters = NULL;
30        mFragmentProgram = NULL;
31}
32
33
34Material::Material():
35mAmbientColor(RgbaColor(0.2f, 0.2f, 0.2f, 1.0f)),
36mDiffuseColor(RgbaColor(1.0f, 1.0f, 1.0f, 1.0f)),
37mSpecularColor(RgbaColor(.0f, .0f, .0f, 1.0f)),
38mEmmisiveColor(RgbaColor(.0f, .0f, .0f, 1.0f))
39{
40        InitMaterial();
41}
42
43
44Material::~Material()
45{
46        //DEL_PTR(mGPUFragmentParameters);
47        //DEL_PTR(mGPUVertexParameters);
48}
49
50
51Material::Material(const RgbaColor &color):
52mDiffuseColor(color),
53mAmbientColor(color),
54mSpecularColor(0, 0, 0, 1),
55mTexture(NULL)
56{
57        InitMaterial();
58}
59
60
61Material RandomMaterial()
62{
63        float a = 0.1f;
64        float b = 0.9f;
65
66        Material m;
67        m.mDiffuseColor = RandomColor(a, b);
68
69        return m;
70}
71
72
73void Material::Render(RenderState *state)
74{
75        state->SetState(this);
76
77        glMaterialfv(GL_FRONT, GL_AMBIENT, (float *)&mAmbientColor.r);
78        glMaterialfv(GL_FRONT, GL_DIFFUSE, (float *)&mDiffuseColor.r);
79        glMaterialfv(GL_FRONT, GL_EMISSION, (float *)&mEmmisiveColor.r);
80        glMaterialfv(GL_FRONT, GL_SPECULAR, (float *)&mSpecularColor.r);
81}
82
83
84void Material::SetFragmentProgram(ShaderProgram *p)
85{
86        mFragmentProgram = p;
87
88        mGPUFragmentParameters->Reset();
89        mGPUFragmentParameters->SetProgram(p);
90}
91       
92
93void Material::SetVertexProgram(ShaderProgram *p)
94{
95        mVertexProgram = p;
96
97        mGPUVertexParameters->Reset();
98        mGPUVertexParameters->SetProgram(p);
99}
100
101}
Note: See TracBrowser for help on using the repository browser.