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 ?
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.
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.
arf. il me semblait pourtant avoir déja vu ça dans des sources (pas les miennes), merci et autant pour moi !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager