Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
int DrawGLScene( GLvoid ) { GLdouble eqr[] = { 0.0f, -1.0f, 0.0f, 0.0f }; // Erst mal den Bildschirm löschen, damit nicht das alte Bild teilweise zu sehen ist glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT ); // Model-View-Matrix zurücksetzen glLoadIdentity(); glTranslatef( x, y, z ); glColorMask( 0, 0, 0, 0 ); glEnable( GL_STENCIL_TEST ); glStencilFunc( GL_ALWAYS, 1, 1 ); glStencilOp( GL_KEEP, GL_KEEP, GL_REPLACE ); glDisable( GL_DEPTH_TEST ); DrawFloor(); glEnable( GL_DEPTH_TEST ); glColorMask( 1, 1, 1, 1 ); glStencilFunc( GL_EQUAL, 1, 1 ); glStencilOp( GL_KEEP, GL_KEEP, GL_KEEP ); glEnable( GL_CLIP_PLANE0 ); glClipPlane( GL_CLIP_PLANE0, eqr ); glPushMatrix(); glScalef( 1.0f, -1.0f, 1.0f ); glLightfv( GL_LIGHT0, GL_POSITION, lightPosition ); glTranslatef( 1.5f, height, 0.0f ); DrawSphere(); glTranslatef( -1.5f, 0.0f, 0.0f ); glRotatef( rviereck, 1.0f, 0.5f, 0.0f ); DrawCube(); glPopMatrix(); glDisable( GL_CLIP_PLANE0 ); glDisable( GL_STENCIL_TEST ); glLightfv( GL_LIGHT0, GL_POSITION, lightPosition ); glEnable( GL_BLEND ); glDisable( GL_LIGHTING ); // glColor4f( 1.0f, 1.0f, 1.0f, 0.8f ); glColor4f( 0.0f, 0.0f, 0.0f, 0.8f ); glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); DrawFloor(); glEnable( GL_LIGHTING ); glDisable( GL_BLEND ); glTranslatef( 1.5f, height, 0.0f ); DrawSphere(); glTranslatef( -1.5f, 0.0f, 0.0f ); glRotatef( rviereck, 1.0f, 0.5f, 0.0f ); DrawCube(); rviereck -= 0.5f; glFlush(); return TRUE; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
if( !LoadGLTexture() ) { return FALSE; } // Shading-Typ, macht schöne Farbverläufe glShadeModel( GL_SMOOTH ); // Hintergrundfarbe // glClearColor( 0.0f, 0.0f, 0.65f, 1.0f ); glClearColor( 0.5f, 0.5f, 0.5f, 1.0f ); // Nebelfarbe // Den Depth-Buffer (oder auch Z-Buffer) aktivieren glClearDepth( 1.0f ); // Den Stencil-Buffer leeren glClearStencil( 0 ); glEnable( GL_DEPTH_TEST ); glDepthFunc( GL_LEQUAL ); // Art der Perspektive festlegen, wir nehmen hier jetzt die schönste und rechenintensivste :) glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST ); // Texture Mapping aktivieren glEnable( GL_TEXTURE_2D ); // Ambientes Licht setzen glLightfv( GL_LIGHT0, GL_AMBIENT, lightAmbient ); // Diffuses Licht setzen glLightfv( GL_LIGHT0, GL_DIFFUSE, lightDiffuse ); // Licht an die Position setzen glLightfv( GL_LIGHT0, GL_POSITION, lightPosition ); // Licht zuweisen glEnable( GL_LIGHT0 ); // Licht anknipsen glEnable( GL_LIGHTING ); // Nebel aktivieren glFogi( GL_FOG_MODE, fogMode[fogFilter] ); // Ist beim Programmstart auf GL_LINEAR gesetzt glFogfv( GL_FOG_COLOR, fogColor ); glFogf( GL_FOG_DENSITY, 0.03f ); glHint( GL_FOG_HINT, GL_NICEST ); glFogf( GL_FOG_START, 1.0f ); glFogf( GL_FOG_END, 5.0f ); glEnable( GL_FOG ); // Init der Sphere q = gluNewQuadric(); gluQuadricNormals( q, GL_SMOOTH ); gluQuadricTexture( q, GL_TRUE ); // Texture der Sphere glTexGeni( GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP ); glTexGeni( GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP ); return TRUE; } |
Administrator
Administrator
Werbeanzeige