salut
je voudrais faire du code opengl avec chaque fonction callback dans un fichier source différent en les précisant à chaque fois par un #define " " mais cela ne fonctionne que pour les fichiers .h, pas les .c. quelqu'un sait il pourquoi ?
salut
je voudrais faire du code opengl avec chaque fonction callback dans un fichier source différent en les précisant à chaque fois par un #define " " mais cela ne fonctionne que pour les fichiers .h, pas les .c. quelqu'un sait il pourquoi ?
J'ai rien compris.
Tu peux donner un exemple de code ?
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
bon par exemple quand tu met toutes les fonctions (affichage, clavier, etc) dans un seul fichier source, cela fonctionne. quand mets ces fonctions dans des fichiers headers en .h et le main() dans le fichier source principal cela marche aussi, par contre dans des headers en .c cela ne marche pas.
Je ne sais pas ce qu'est un "header en .c", ni ce qui se cache derrière "cela ne marche pas". Essaye de détailler tes propos.
Et tu devrais vraiment donner un bout de code, on irait beaucoup plus vite.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
une fonction d'affichage toute simple :
on peux mettre cette fonction dans le même fichier source que le reste du programme openGLUT ou alors créer un fichier header affichage.h contenant cette fontion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 void display(void) { glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glLoadIdentity (); /* clear the matrix */ /* viewing transformation */ gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glScalef (1.0, 2.0, 1.0); /* modeling transformation */ glutWireCube (1.0); glFlush (); }
Or, lorsque je place la fonction display dans affichage.c au lieu affichage.h (en déclarant #include "affichage.c" bien sur), message d'erreur de dev c++.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 #include "affichage.h" //header contenant la fonction ci dessus int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100); glutCreateWindow (argv[0]); init (); glutDisplayFunc(display); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; }
d'ou cela vient il ? [/code]
Quelle idée d'inclure un .c
Seuls les fichiers en-têtes doivent être inclus, les fichiers source (.c) sont eux compilés.
Si tu veux mettre ta fonction dans un .c séparé, il faudra tout de même créer l'en-tête correspondant, qui ne fera que déclarer la fonction. Ensuite partout où tu voudras utiliser la fonction, il faudra bien inclure le .h et non le .c.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
arf. il me semblait pourtant avoir déja vu ça dans des sources (pas les miennes), merci et autant pour moi !
Partager