[OS4][OpenGL] Scrolling d’étoiles sur 4 plans en parallaxe
12 sujets de 1 à 12 (sur un total de 12)
-
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
i=1 ou i=0 ?
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.)
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
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