[Opengl] Irányított fény

[Opengl] Irányított fény
2011-08-06T16:01:18+02:00
2011-08-07T15:05:33+02:00
2022-11-22T17:45:41+01:00
*deleted_28760134
Hali!
Egy alap grafikai motor készítek,viszont a fények,nem úgy működnek ahogy kellene nekik!

float[] mat_specular = { Red, Green, Blue, Alpha }; float[] mat_shininess = { 50.0f }; float[] light_position = { LightPosition.X, LightPosition.Y, 1, 0.0f }; GL.glShadeModel(GL.GL_SMOOTH); GL.glMaterialfv(GL.GL_FRONT, GL.GL_SPECULAR, mat_specular); GL.glMaterialfv(GL.GL_FRONT, GL.GL_SHININESS, mat_shininess); float[] spot_direction = { 0f, 0f, -1f}; GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, light_position); GL.glLightf(GL.GL_LIGHT0, GL.GL_SPOT_CUTOFF,45); GL.glLightfv(GL.GL_LIGHT0, GL.GL_SPOT_DIRECTION, spot_direction); GL.glLightf(GL.GL_LIGHT0, GL.GL_SPOT_EXPONENT, 0.0f); GL.glEnable(GL.GL_LIGHTING); GL.glEnable(GL.GL_LIGHT0);
Ezzel a kóddal próbálok irányított fényt csinálni,de valahogy nem jön össze,egy 2d négyzetből kéne csak egy kört kivilágítani,ez viszont,vagy semmit nem csinál,vagy pedig mindent átszínez!
Mutasd a teljes hozzászólást!
Példa:

Fény beállítás:
static float light0_dir[] = { 0, 0, -1 }; static float light0_pos[] = {0, 0, 0, 1}; glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, light0_dir); glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 45.0f); glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 100.0f); glLightfv(GL_LIGHT0, GL_POSITION, light0_pos);

Kirajzolás:
glLoadIdentity(); glTranslated(-2.5, -2.5, -10); glBegin(GL_QUADS); glNormal3f(0, 0, 1); float d = 0.1f; for (int i=0; i<50; i++) for (int j=0; j<50; j++) { glVertex2f( i*d, j*d ); glVertex2f( (i+1)*d, j*d ); glVertex2f( (i+1)*d, (j+1)*d ); glVertex2f( i*d, (j+1)*d ); } glEnd();

A példában 50x50 darab quadra rajzolódik ki a fényfolt.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd