[OS4][OpenGL] Scrolling d’étoiles sur 4 plans en parallaxe

12 sujets de 1 à 12 (sur un total de 12)

  • AmiDARK

      #6960

      Juste pour le fun …

      Je débute en C++ et en OpenGL …

      (je n’y connais vraiment rien dans ces 2 domaines précédents .. mais je m’amuse à apprendre)

      Et donc, pour le fun, je partage mon premier essai de scrolling d’étoiles pour Amiga OS 4 et OpenGL …

      /* OpenGL Sample #1

      SStar scrolling with 4 parallaxs

      */

      #include

      #include

      #include

      #include

      #include

      float PosXY[256][2];

      /* WHAT WE WANT TO DISPLAY ON SCREEN MUST BE ADDED IN THIS FUNCTION */

      void My_glRendering( void )

      {

      int i;

      glClearColor( 0.0, 0.0, 0.0, 0.0); /* Set backdrop as black */

      glClear( GL_COLOR_BUFFER_BIT ); /* Clear the backdrop with glClearColor color */

      glColor3f( 1.0, 1.0, 1.0 );

      for( i = 0; i < 256 ; i++ ){ PosXY[1] -= 0.0001f ;

      if ( i < 64 ) PosXY[1] -= 0.0001f ;

      if ( i < 128 ) PosXY[1] -= 0.0001f ;

      if ( i < 192 ) PosXY[1] -= 0.0001f ;

      if ( PosXY[1] <=0.0 ) PosXY[1] = 1.0;

      glBegin(GL_POINTS) ;

      glVertex3f( PosXY[1], PosXY[2], 0.0f );

      glEnd() ;

      }

      glFlush();

      }

      /* SOME INITIALIZATIONS HERE */

      void My_glInit( void )

      {

      glMatrixMode( GL_PROJECTION );

      glLoadIdentity() ;

      glOrtho( 0.0, 1.0, 0.0, 1.0, -1.0, 1.0 );

      }

      /* MAIN C PROCEDURE STARTUP-SEQUENCE IS HERE */

      int main(int argc, char** argv)

      {

      int i;

      for( i = 1; i < 256 ; i++ ){ PosXY[1] = rand() % 100000 / 100000.0 ;

      PosXY[2] = rand() % 100000 / 100000.0 ;

      }

      glutInit(&argc, argv); /* Initialize Glut */

      glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); /* Define display mode properties such as single buffer, color mode and */

      glutInitWindowSize( 640, 480 ); /* define the sizes of the window to create */

      glutInitWindowPosition( 300, 300 );

      glutCreateWindow("AmiDARK Test Window"); /* Create the final rendering window */

      My_glInit();

      glutDisplayFunc( My_glRendering );

      glutIdleFunc( My_glRendering );

      mglEnableSync(GL_TRUE );

      glutMainLoop();

      return 0;

      }

      Voici un lien vers l’archive ( en RAR ) qui contient à la fois le fichier .c la makefile, le projet en CodeBENCH et l’exécutable pour testouiller :

      http://files.odyssey-creators.com/os4opengl/OpenGLStarsv1.rar

      Murakami

        #110567

        Je viens juste de tester sur mon MicroA1. Ça me rappelle le bon vieux temps des démos sur A500 ! :-)

        AmiDARK

          #110568

          Ben alors … A part Murakami, personne n’a testé mon petit prog d’étoiles ?

          henes

            #110569

            Buffer overflow et trash/crash à l’horizon.

            Remplace 257 par 256 dans les for().

            cclecle

              #110570

              eu… pourquoi ?

              un int ne fait-il pas 16bits ?

              donc -32768..32767 ?

              A600 + 604n + RTC + Vampire V2 600, Coffin R54 / wb3.1.4.1
              A1200 + Vampire V2 1200, wb3.1.4.1

              Anonyme

                #110571

                i=1 ou i=0 ?

                krabob

                  #110572

                  henes a raison, pour scanner une table de 256 elements

                  la boucle for ressemble à:

                  for( i = 0; i < 256 ; i++ ){ } le premier element adressable est 0, le dernier element adressable est 255. Le C/C++ permet de pouvoir compiler et adresser des éléments au delà des tables, ce qui peut faire planter. (on ne sait pas ce qu’il s’y trouve.)

                  AmiDARK

                    #110573

                    Oui je sais, j’ai modifié cela mais je n’ai pas encore uploadé de nouvelle version … je modifie le post inital pour mentionner à 256 comme il se devrait.

                    thellier

                      #110574

                      Bonjour

                      J’ai un peu modifié ton prog

                      Tu devrais le mettre sur aminet car un prog 3D COURT c’est pédagogique et puis il est compatible tout OS

                      Alain

                      /* OpenGL Sample #1 Star scrolling with parallaxs from AmiDARK – 2009*/

                      /* Enhancements from Alain Thellier */

                      #define STARCOUNT 300

                      #define STARSIZE 6.0

                      #define STARSPEED 0.0002

                      #include

                      #include

                      #include

                      #include

                      #include

                      struct star3D {float x,y,size,speed,r,g,b;};

                      #define NLOOP(nbre) for(n=0;n

                      AmiDARK

                        #110575

                        Salut,

                        C’est une idée sympa en effet :)

                        Mais en fait j’ai pas trop le temps de le faire ces jours ci .. peut-être + tard …

                        Merci

                        @ +

                        Alex

                          #110576

                          En parlant de ça peut-être qu’il pourrait être sympa de proposer une série d’articles (A=P, Obligement et/ou Gurumed.net) sur ton exploration du C sur AmigaOS et d’OpenGL. ça pourrait susciter des envies, qui sait ?

                          AmiDARK

                            #110577

                            C’est une idée intéressante

                            (je verrais dès que j’aurais un peu + de temps de libre)

                            d’ailleurs j’ai eu beaucoup d’aide sur le forum d’Amigans.net …

                            Franchement, même si tu as l’impression de passer pour un noob, les gars te répondent correctement avec toutes les informations dont tu as besoin … J’apprécie grandement ce forum qui est pour moi de Qualité !!!

                          12 sujets de 1 à 12 (sur un total de 12)

                          • Vous devez être connecté pour répondre à ce sujet.

                          Forums AmigaOS, MorphOS et AROS Création [OS4][OpenGL] Scrolling d’étoiles sur 4 plans en parallaxe

                          Amiga Impact