00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "materialsolid.h"
00023 #include <kerosin/openglserver/openglserver.h>
00024
00025 using namespace kerosin;
00026 using namespace zeitgeist;
00027 using namespace salt;
00028 using namespace boost;
00029 using namespace std;
00030
00031 MaterialSolid::MaterialSolid()
00032 : Material(),
00033 mAmbient(0.2f,0.2f,0.2f,1.0f),
00034 mDiffuse(1.0f,1.0f,1.0f,1.0f),
00035 mSpecular(0.0f,0.0f,0.0f,1.0f),
00036 mEmission(0.0f,0.0f,0.0f,1.0f)
00037 {
00038 }
00039
00040 MaterialSolid::~MaterialSolid()
00041 {
00042 }
00043
00044 void MaterialSolid::SetupMaterial()
00045 {
00046
00047 glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,mAmbient);
00048
00049
00050 glColor3fv(mDiffuse);
00051 glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,mDiffuse);
00052
00053
00054 glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mSpecular);
00055
00056
00057 glMaterialfv(GL_FRONT_AND_BACK,GL_EMISSION,mEmission);
00058 }
00059
00060 void MaterialSolid::Bind()
00061 {
00062 SetupMaterial();
00063 glDisable(GL_TEXTURE_2D);
00064 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
00065 }
00066
00067 void MaterialSolid::SetAmbient(const RGBA& ambient)
00068 {
00069 mAmbient = ambient;
00070 }
00071
00072 const RGBA& MaterialSolid::GetAmbient()
00073 {
00074 return mAmbient;
00075 }
00076
00077 void MaterialSolid::SetDiffuse(const RGBA& diffuse)
00078 {
00079 mDiffuse = diffuse;
00080 }
00081
00082 const RGBA& MaterialSolid::GetDiffuse()
00083 {
00084 return mDiffuse;
00085 }
00086
00087 void MaterialSolid::SetSpecular(const RGBA& specular)
00088 {
00089 mSpecular = specular;
00090 }
00091
00092 const RGBA& MaterialSolid::GetSpecular()
00093 {
00094 return mSpecular;
00095 }
00096
00097 void MaterialSolid::SetEmission(const RGBA& emission)
00098 {
00099 mEmission = emission;
00100 }
00101
00102 const RGBA& MaterialSolid::GetEmission()
00103 {
00104 return mEmission;
00105 }
00106
00107
00108