aths
2003-12-31, 05:10:58
PROCEDURE Licht;
var //Const
LightAmbient : Array [0..3] Of GLfloat; //= (0.1, 0.1, 0.1, 1.0);
LightDiffuse : Array [0..3] Of GLfloat; //= (0.7, 0.7, 0.7, 0);
LightSpecular : Array [0..3] Of GLfloat; //= (1.0, 1.0, 1.0, 0);
LightPosition : Array [0..3] Of GLfloat; //= (1.0, 3.0, 2.0, lw);
MaterialColor : Array [0..3] Of GLfloat; //= (1.0, 1.0, 0.5, 1.0);
BEGIN
lightambient[0]:=0.01; lightambient[1]:=0.01;lightambient[2]:=0.01;lightambient[3]:=1.0;
LightDiffuse[0]:=1.0; LightDiffuse[1]:=1.0; LightDiffuse[2]:=1.0; LightDiffuse[3]:=1.0;
LightSpecular[0]:=1.0; LightSpecular[1]:=0.0; LightSpecular[2]:=0.0; LightSpecular[3]:=1.0;
LightPosition[0]:=1.0; LightPosition[1]:=3.0; LightPosition[2]:=2.0; LightPosition[3]:=lw;
MaterialColor[0]:=1.0; MaterialColor[1]:=1.0; MaterialColor[2]:=0.3; MaterialColor[3]:=1.0;
glClearDepth(1.0); // Clear the depth buffer
glDepthFunc(GL_LESS); // Type of depth test
glShadeModel (GL_flat); // Smooth color shading
glEnable (GL_DEPTH_TEST); // Depth test
glLightfv (GL_LIGHT0, GL_AMBIENT, @LightAmbient); // Licht erzeugen
glLightfv (GL_LIGHT0, GL_DIFFUSE, @LightDiffuse);
glLightfv (GL_LIGHT0, GL_SPECULAR, @LightSpecular);
glLightfv (GL_LIGHT0, GL_POSITION, @LightPosition);// Lichtposition
glEnable (GL_LIGHT0);
glEnable (GL_LIGHTING);
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 1);
// glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, @lightspecular);
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, @MaterialColor);
END;
Wenn ich "glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, @lightspecular);" wieder einkommentiere, sieht der Torus ziemlich falsch aus: Das Specular Light ist viel zu groß, und es gibt extrem harte Übergänge zum Schattenbereich. Woran könnte das liegen?
var //Const
LightAmbient : Array [0..3] Of GLfloat; //= (0.1, 0.1, 0.1, 1.0);
LightDiffuse : Array [0..3] Of GLfloat; //= (0.7, 0.7, 0.7, 0);
LightSpecular : Array [0..3] Of GLfloat; //= (1.0, 1.0, 1.0, 0);
LightPosition : Array [0..3] Of GLfloat; //= (1.0, 3.0, 2.0, lw);
MaterialColor : Array [0..3] Of GLfloat; //= (1.0, 1.0, 0.5, 1.0);
BEGIN
lightambient[0]:=0.01; lightambient[1]:=0.01;lightambient[2]:=0.01;lightambient[3]:=1.0;
LightDiffuse[0]:=1.0; LightDiffuse[1]:=1.0; LightDiffuse[2]:=1.0; LightDiffuse[3]:=1.0;
LightSpecular[0]:=1.0; LightSpecular[1]:=0.0; LightSpecular[2]:=0.0; LightSpecular[3]:=1.0;
LightPosition[0]:=1.0; LightPosition[1]:=3.0; LightPosition[2]:=2.0; LightPosition[3]:=lw;
MaterialColor[0]:=1.0; MaterialColor[1]:=1.0; MaterialColor[2]:=0.3; MaterialColor[3]:=1.0;
glClearDepth(1.0); // Clear the depth buffer
glDepthFunc(GL_LESS); // Type of depth test
glShadeModel (GL_flat); // Smooth color shading
glEnable (GL_DEPTH_TEST); // Depth test
glLightfv (GL_LIGHT0, GL_AMBIENT, @LightAmbient); // Licht erzeugen
glLightfv (GL_LIGHT0, GL_DIFFUSE, @LightDiffuse);
glLightfv (GL_LIGHT0, GL_SPECULAR, @LightSpecular);
glLightfv (GL_LIGHT0, GL_POSITION, @LightPosition);// Lichtposition
glEnable (GL_LIGHT0);
glEnable (GL_LIGHTING);
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 1);
// glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, @lightspecular);
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, @MaterialColor);
END;
Wenn ich "glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, @lightspecular);" wieder einkommentiere, sieht der Torus ziemlich falsch aus: Das Specular Light ist viel zu groß, und es gibt extrem harte Übergänge zum Schattenbereich. Woran könnte das liegen?