home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 February
/
Chip_2001-02_cd1.bin
/
bonus
/
demos
/
CS
/
exp
/
SOURCES
/
GLENGINE
/
material.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
2000-07-16
|
2KB
|
69 lines
#include "material.h"
#include "macros.h"
MaterialGL::MaterialGL() {
Reset();
}
void MaterialGL::Reset()
{
ambient[0] = ambient[1] = ambient[2] = 0.2F; ambient[3] = 1.0F;
diffuse[0] = diffuse[1] = diffuse[2] = 0.8F; diffuse[3] = 1.0F;
specular[0] = specular[1] = specular[2] = 0.0F; specular[3] = 1.0F;
emission[0] = emission[1] = emission[2] = 0.0F; emission[3] = 1.0F;
shininess = 0.0F;
}
void MaterialGL::GL (GLenum face)
{
glMaterialfv(face, GL_AMBIENT, ambient);
glMaterialfv(face, GL_DIFFUSE, diffuse);
glMaterialfv(face, GL_SPECULAR, specular);
glMaterialfv(face, GL_EMISSION, emission);
glMaterialf(face, GL_SHININESS, shininess);
}
void MaterialGL::Ambient (GLfloat r, GLfloat g, GLfloat b, GLfloat a=1.0F) {
SetVector4(ambient, r, g, b, a);
}
void MaterialGL::Diffuse (GLfloat r, GLfloat g, GLfloat b, GLfloat a=1.0F) {
SetVector4(diffuse, r, g, b, a);
}
void MaterialGL::Specular (GLfloat r, GLfloat g, GLfloat b, GLfloat a=1.0F) {
SetVector4(specular, r, g, b, a);
}
void MaterialGL::Emission (GLfloat r, GLfloat g, GLfloat b, GLfloat a=1.0F) {
SetVector4(emission, r, g, b, a);
}
void MaterialGL::Ambient (GLfloat* v) {
SetVector4(ambient, *v, *(v+1), *(v+2), *(v+3));
}
void MaterialGL::Diffuse (GLfloat* v) {
SetVector4(diffuse, *v, *(v+1), *(v+2), *(v+3));
}
void MaterialGL::Specular (GLfloat* v) {
SetVector4(specular, *v, *(v+1), *(v+2), *(v+3));
}
void MaterialGL::Emission (GLfloat* v) {
SetVector4(emission, *v, *(v+1), *(v+2), *(v+3));
}
void MaterialGL::Shininess (GLfloat f) {
shininess = f;
}
const GLfloat* MaterialGL::Ambient () {
return ambient;
}
const GLfloat* MaterialGL::Diffuse () {
return diffuse;
}
const GLfloat* MaterialGL::Specular () {
return specular;
}
const GLfloat* MaterialGL::Emission () {
return emission;
}
GLfloat MaterialGL::Shininess () {
return shininess;
}