migf1 Δημοσ. 20 Ιουλίου 2011 Δημοσ. 20 Ιουλίου 2011 Βαλε τις βιβλιοθξκες στο linker (google για το πως μπαινουν στο dev-c++) Αλλά πρώτα βεβαιώσου πως δεν έχεις αναμίξει βιβλιοθήκες και header files από διαφορετικές εκδόσεις του GLUT (ή όποιου clone χρησιμοποιείς). Π.χ. έχοντας εγκαταστήσει το Freeglut (που αναφέρω παραπάνω) κι έχοντας βάλει τα αρχεία του στους φακέλους που λέει στο readme του, και έχοντας τους συμπεριλάβει στα κατάλληλα environment variables (αναφέρονται επίσης στο readme του) η γραμμή εντολών για compilation με mingw είναι η παρακάτω: > gcc -Wall -std=c99 my1stglut.c -o my1stglut.exe -lfreeglut -lopengl32 -Wl,--subsystem,windows
Luciddream Δημοσ. 20 Ιουλίου 2011 Δημοσ. 20 Ιουλίου 2011 ρε παιδιά την απάντηση την έδωσα απο χτές το βράδυ.. απλά προσπαθεί να το κάνει compile σαν .cpp ενώ ο κώδικας είναι C... αν φτιάξει το project σαν C project μια χαρά τρέχει ο κώδικας... τουλάχιστον σε μένα Kακό αυτο... γιατί..?? το πέρασα..
sp_steve Δημοσ. 20 Ιουλίου 2011 Μέλος Δημοσ. 20 Ιουλίου 2011 αν πάς στο DevCpp φάκελο στο include/GL τι αρχεία έχει μέσα? εμένα έχει gl.h glu.h glut.h glext.h glutf90.h στο update του devcpp έχει άλλο ενα glut (νομίζω λέγεται freeglut η κάτι παρόμοιο)... μόνο όταν πέρασα αυτό και μετά το έσβησα και μετά ξαναπέρασα το απλό glut μου είχε φτιάξει. δεν έχω ιδέα γιατι έγινε αυτό... Τελικά το πρόβλημα λύθηκε... το έβγαλα και το ξαναέβαλα... ευχαριστώ πολύ... Να σε ρωτήσω και κάτι άλλο που ίσως θα μπορείς να με βοηθήσεις.... Επειδή είμαι σχετικά αρχάριος με τα γραφικά και δεν έχω ξαναχρησιμοποιήσει το glut, μήπως ξέρεις να μου πείς με ποιόν τρόπο θα συνδέσω τα αντίκειμενα του κώδικά μου ( αυτά που θέλω να κινούνται) με τα γραφικά? Για να σου δώσω να καταλάβεις... Υλοποιώ ένα παιχνίδι μάχης με στρατιώτες και θέλω να αντιστοιχίσω τους στρατιώτες με κάποιο γεωμετρικό σχήμα...
παπι Δημοσ. 20 Ιουλίου 2011 Δημοσ. 20 Ιουλίου 2011 Τι πραμα; Σε αυτο που εχεις ποσταρει εχεις ενα τριγωνο το οποιο σπιναρει στον αξονα χ. Εσυ τι θελεις να κανεις;
Luciddream Δημοσ. 20 Ιουλίου 2011 Δημοσ. 20 Ιουλίου 2011 για να κατανοήσεις το glut, πρέπει να ρίξεις αρκετό διάβασμα... παραδείγματα κώδικα μπορείς να βρείς εδω: http://www.opengl.org/resources/code/samples/glut_examples/examples/examples.html και νομίζω το manual που χρησιμοποίησα εγώ είναι εδώ: http://fly.cc.fer.hr/~unreal/theredbook/ το παιχνίδι θα είναι 2d η 3d? αν δείς το pacman που είναι 2d που σου πόσταρα παραπάνω (η εδώ) βλέπεις κάποια σχήματα. αυτό που έχω κάνει είναι να φτιάξω ένα πίνακα απο 200χ200 στοιχεία (τυχαίο νούμερο) και το κάθε στοιχείο αντιστοιχεί σε ένα τετράγωνο. οπότε αυτό που κάνω είναι να δημιουργήσω ένα πίνακα 16χ16 στοιχείων το οποίο θα γεμίζει ουσιαστικά το κάθε τετράγωνο, κάπως έτσι: "................", "......xxxxx.....", "....xxxxxxxxx...", "...xxxxxxxxxxx..", "...xxxxxxxxxxx..", "..xxxxxxxxxx....", "..xxxxxxx.......", "..xxxx..........", "..xxxxxxx.......", "..xxxxxxxxxx....", "...xxxxxxxxxxx..", "...xxxxxxxxxxx..", "....xxxxxxxxx...", "......xxxxx.....", "................", "................", (χμ... αν το κάνεις copy σε notepad θα καταλάβεις τι εννοώ) για το κάθε τι που θέλω να φτιάξω στην οθόνη. υπάρχουν αρκετές τεχνικές για να το πετύχεις αυτό, εγώ ακολούθησα αυτό που υπήρχε στο βιβλίο. τώρα αν θέλεις για 3d, καλό θα είναι να χρησιμοποιήσεις τις έτοιμες συναρτήσεις που έχει η glut. μέσω των παραδειγμάτων που σου έγραψα παραπάνω νομίζω θα τα κατανοήσεις πολύ πιο έυκολα...
παπι Δημοσ. 20 Ιουλίου 2011 Δημοσ. 20 Ιουλίου 2011 για να κατανοήσεις το glut, πρέπει να ρίξεις αρκετό διάβασμα... παραδείγματα κώδικα μπορείς να βρείς εδω: http://www.opengl.or...s/examples.html και νομίζω το manual που χρησιμοποίησα εγώ είναι εδώ: http://fly.cc.fer.hr...eal/theredbook/ το παιχνίδι θα είναι 2d η 3d? αν δείς το pacman που είναι 2d που σου πόσταρα παραπάνω (η εδώ) βλέπεις κάποια σχήματα. αυτό που έχω κάνει είναι να φτιάξω ένα πίνακα απο 200χ200 στοιχεία (τυχαίο νούμερο) και το κάθε στοιχείο αντιστοιχεί σε ένα τετράγωνο. οπότε αυτό που κάνω είναι να δημιουργήσω ένα πίνακα 16χ16 στοιχείων το οποίο θα γεμίζει ουσιαστικά το κάθε τετράγωνο, κάπως έτσι: καλα ρε θηριο, πηγες και εκανες handcoded τα γραφικα; (texture και παλι texture)
Luciddream Δημοσ. 20 Ιουλίου 2011 Δημοσ. 20 Ιουλίου 2011 texture είναι ... αν εννοείς να κάνει load κάποια ετοιμη εικόνα, θέλει άλλο library γιατι η glut δεν υποστηρίζει κάτι τέτοιο. (νομίζω δηλαδή). και δεν ήθελα να τα μπλέξω περισσότερο τα πράγματα ..
sp_steve Δημοσ. 20 Ιουλίου 2011 Μέλος Δημοσ. 20 Ιουλίου 2011 Τι πραμα; Σε αυτο που εχεις ποσταρει εχεις ενα τριγωνο το οποιο σπιναρει στον αξονα χ. Εσυ τι θελεις να κανεις; Έχω άλλο κώδικα, αυτό τον βρήκα για να καταλάβω περίπου πώς λειτουργεί το glut. για να κατανοήσεις το glut, πρέπει να ρίξεις αρκετό διάβασμα... παραδείγματα κώδικα μπορείς να βρείς εδω: http://www.opengl.org/resources/code/samples/glut_examples/examples/examples.html και νομίζω το manual που χρησιμοποίησα εγώ είναι εδώ: http://fly.cc.fer.hr/~unreal/theredbook/ το παιχνίδι θα είναι 2d η 3d? αν δείς το pacman που είναι 2d που σου πόσταρα παραπάνω (η εδώ) βλέπεις κάποια σχήματα. αυτό που έχω κάνει είναι να φτιάξω ένα πίνακα απο 200χ200 στοιχεία (τυχαίο νούμερο) και το κάθε στοιχείο αντιστοιχεί σε ένα τετράγωνο. οπότε αυτό που κάνω είναι να δημιουργήσω ένα πίνακα 16χ16 στοιχείων το οποίο θα γεμίζει ουσιαστικά το κάθε τετράγωνο, κάπως έτσι: "................", "......xxxxx.....", "....xxxxxxxxx...", "...xxxxxxxxxxx..", "...xxxxxxxxxxx..", "..xxxxxxxxxx....", "..xxxxxxx.......", "..xxxx..........", "..xxxxxxx.......", "..xxxxxxxxxx....", "...xxxxxxxxxxx..", "...xxxxxxxxxxx..", "....xxxxxxxxx...", "......xxxxx.....", "................", "................", (χμ... αν το κάνεις copy σε notepad θα καταλάβεις τι εννοώ) για το κάθε τι που θέλω να φτιάξω στην οθόνη. υπάρχουν αρκετές τεχνικές για να το πετύχεις αυτό, εγώ ακολούθησα αυτό που υπήρχε στο βιβλίο. τώρα αν θέλεις για 3d, καλό θα είναι να χρησιμοποιήσεις τις έτοιμες συναρτήσεις που έχει η glut. μέσω των παραδειγμάτων που σου έγραψα παραπάνω νομίζω θα τα κατανοήσεις πολύ πιο έυκολα... Το παιχνίδι είναι 2D. Να σου εξηγήσω λίγο πως είναι η υπόθεση του παιχνιδιού... Έχουμε 2 ομάδες οι οποίες περιέχουν τοξότες και ξιφομάχους και ένα κάστρο. Στην αρχή του παιχνιδιού μπορώ να δίνω τις διαστάσεις του 2D κόσμου και το πλήθος των στρατιωτών. Οι στρατιώτες στην αρχή ξεκινάνε όλοι μαζί και μετά ανάλογα με τις ενέργειες που γίνονται από μία συνάρτηση random() μπορούν να κινηθούν προς κάθε κατέυθυνση ( δηλ να σκοτώνουν και να σκοτώνονται απο αντίπαλο). Εγώ αυτό που πρέπει να κάνω είναι να βάλω σε κάθε είδος στρατιώτη ένα σχήμα και σε κάθε ομάδα ενα χρώμα... Σόρρυ που ρωτάω τόσα πολλά αλλά δεν έχω ξανασχοληθεί με glut (και πρέπει να το υλοποιήσω μόνο με αυτό).
Luciddream Δημοσ. 21 Ιουλίου 2011 Δημοσ. 21 Ιουλίου 2011 Πολυ απλο ειναι μολις παω σπιτι θα σου απαντησω λοιπόν, δεν ξέρω απο που να αρχίσω και που να τελειώσω... γιατι προφανώς δεν έχεις ασχοληθεί καθόλου με glut και γνώμη μου είναι οτι πρέπει πρώτα να διαβάσεις όλο το manual (και να τρέξεις τα παραδείγματα που έχει μέσα) για να καταλάβεις τι κάνει η κάθε εντολή. και εγώ μην νομίζεις οτι θυμάμαι, πολλά πράγματα κατάλαβα πώς δουλεύουν και τα έκανα copy. αρχικά πρέπει μέσα στο main να δηλώσουμε τις συναρτήσεις τις glut. θα σου κάνω copy κομάτια απο τον κώδικα του pacman που πήγα να φτιάξω, και θα τα εξηγώ. int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100); glutCreateWindow ("Welcome to Pacman"); init (); glutDisplayFunc(display); glutIdleFunc(idleFunc); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; } λοιπόν, τα παραπάνω ξεκινάνε κάποια πράγματα στο glut. ουσιαστικά πρώτα δημιουργεί το περιβάλλον, το οποίο το έχει ώς double buffer, ώστε να "ετοιμάζει" όλη την εικόνα και να μας την δείχνει έτοιμη, το παράθυρο το κάνει 500χ500 pixel, και το βάζει στην θέση 100,100 της οθόνης. δημιουργεί το παράθυρο με τίτλο "Welcome to Pacman". μετά τρέχει μια συνάρτηση init που ουσιαστικά έχω βάλει τις παρακάτω εντολές: glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); για να σβήσει τον πίνακα του χρώματος και να δώσει την τιμή FLAT για το χρώμα, δηλαδή οτι το κάθε σχήμα θα έχει μόνο ένα χρώμα. μπορούμε να το κάνουμε να έχει χρώμα gradient αν αλλάξουμε την εντολή σε GL_SMOOTH και θα γίνει κάπως έτσι: στην συνέχεια λέμε στην glut οτι οι συναρτήσεις που θα τρέχει όταν θέλει να δείξει μια εικόνα στην οθόνη, είναι η display. όταν δεν κάνει καμία εντολή, η idleFunc. όταν αλλάζει το μέγεθος του παραθύρου η όταν δημιουργείται το παράθυρο, η reshape. και όταν πατάμε κάποιο πλήκτρο απο το πληκτρολόγιο η keyboard. υπάρχουν και άλλες συναρτήσεις της glut, τις οποίες μπορούμε να αλλάξουμε η να δώσουμε τις δικιές μας εντολές. π.χ η glutMouseFunc που ενεργοποιείται όταν πατάμε κάποιο κουμπί του mouse. η τελευταία εντολή MainLoop ξεκινάει τα γραφικά μάς, ουσιαστικά τρέχοντας μια φορά μόνο την εντολή display. μετά απο εκεί και πέρα είναι δικό μας θέμα το πώς θα τρέχουν τα γραφικά μας και η κίνηση μας. ώς εδώ καλά..?? πές μου για να συνεχίσω...
redLizard Δημοσ. 21 Ιουλίου 2011 Δημοσ. 21 Ιουλίου 2011 Και εγώ παλιά GLUT χρησιμοποιούσα αλλά σε περιορίζει σε κάποια πράματα (πχ πλήρη έλεγχο του main loop) και για αυτό πήγα σε GLFW (http://www.glfw.org) το βρήκα πιο άνετο και σας το προτείνω να το δοκιμάσετε.
migf1 Δημοσ. 21 Ιουλίου 2011 Δημοσ. 21 Ιουλίου 2011 Και εγώ παλιά GLUT χρησιμοποιούσα αλλά σε περιορίζει σε κάποια πράματα (πχ πλήρη έλεγχο του main loop) και για αυτό πήγα σε GLFW (http://www.glfw.org) το βρήκα πιο άνετο και σας το προτείνω να το δοκιμάσετε. Αυτό το πρόβλημα έχει αντιμετωπιστεί εδώ και πολύ καιρό με extensions τόσο στο FreeGlut όσο και στο OpenGlut. ΥΓ. Ωραίο το link!
Luciddream Δημοσ. 21 Ιουλίου 2011 Δημοσ. 21 Ιουλίου 2011 παιδιά καλά όλα αυτά που γράφετε αλλα δείτε τι γράφει το παλικάρι πάνω.. Σόρρυ που ρωτάω τόσα πολλά αλλά δεν έχω ξανασχοληθεί με glut (και πρέπει να το υλοποιήσω μόνο με αυτό).
migf1 Δημοσ. 21 Ιουλίου 2011 Δημοσ. 21 Ιουλίου 2011 παιδιά καλά όλα αυτά που γράφετε αλλα δείτε τι γράφει το παλικάρι πάνω.. Εμείς δηλαδή δεν έχουμε ψυχή, γιατί να μη μάθουμε και μεις 5 παραπάνω πράγματα; ΥΓ. Σοβαρά, δεν το ήξερα το GLFW και φαίνεται πολύ ωραίο!
sp_steve Δημοσ. 21 Ιουλίου 2011 Μέλος Δημοσ. 21 Ιουλίου 2011 Πολυ απλο ειναι μολις παω σπιτι θα σου απαντησω λοιπόν, δεν ξέρω απο που να αρχίσω και που να τελειώσω... γιατι προφανώς δεν έχεις ασχοληθεί καθόλου με glut και γνώμη μου είναι οτι πρέπει πρώτα να διαβάσεις όλο το manual (και να τρέξεις τα παραδείγματα που έχει μέσα) για να καταλάβεις τι κάνει η κάθε εντολή. και εγώ μην νομίζεις οτι θυμάμαι, πολλά πράγματα κατάλαβα πώς δουλεύουν και τα έκανα copy. αρχικά πρέπει μέσα στο main να δηλώσουμε τις συναρτήσεις τις glut. θα σου κάνω copy κομάτια απο τον κώδικα του pacman που πήγα να φτιάξω, και θα τα εξηγώ. int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100); glutCreateWindow ("Welcome to Pacman"); init (); glutDisplayFunc(display); glutIdleFunc(idleFunc); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; } λοιπόν, τα παραπάνω ξεκινάνε κάποια πράγματα στο glut. ουσιαστικά πρώτα δημιουργεί το περιβάλλον, το οποίο το έχει ώς double buffer, ώστε να "ετοιμάζει" όλη την εικόνα και να μας την δείχνει έτοιμη, το παράθυρο το κάνει 500χ500 pixel, και το βάζει στην θέση 100,100 της οθόνης. δημιουργεί το παράθυρο με τίτλο "Welcome to Pacman". μετά τρέχει μια συνάρτηση init που ουσιαστικά έχω βάλει τις παρακάτω εντολές: glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); για να σβήσει τον πίνακα του χρώματος και να δώσει την τιμή FLAT για το χρώμα, δηλαδή οτι το κάθε σχήμα θα έχει μόνο ένα χρώμα. μπορούμε να το κάνουμε να έχει χρώμα gradient αν αλλάξουμε την εντολή σε GL_SMOOTH και θα γίνει κάπως έτσι: στην συνέχεια λέμε στην glut οτι οι συναρτήσεις που θα τρέχει όταν θέλει να δείξει μια εικόνα στην οθόνη, είναι η display. όταν δεν κάνει καμία εντολή, η idleFunc. όταν αλλάζει το μέγεθος του παραθύρου η όταν δημιουργείται το παράθυρο, η reshape. και όταν πατάμε κάποιο πλήκτρο απο το πληκτρολόγιο η keyboard. υπάρχουν και άλλες συναρτήσεις της glut, τις οποίες μπορούμε να αλλάξουμε η να δώσουμε τις δικιές μας εντολές. π.χ η glutMouseFunc που ενεργοποιείται όταν πατάμε κάποιο κουμπί του mouse. η τελευταία εντολή MainLoop ξεκινάει τα γραφικά μάς, ουσιαστικά τρέχοντας μια φορά μόνο την εντολή display. μετά απο εκεί και πέρα είναι δικό μας θέμα το πώς θα τρέχουν τα γραφικά μας και η κίνηση μας. ώς εδώ καλά..?? πές μου για να συνεχίσω... Ναι μιά χαρά ως εδώ... τα κάνω παράλληλα ότι μου λές στον κώδικά μου και ψιλιάζομαι πώς λειτουργεί... μπορείς να συνεχίσεις...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.