Εμφάνιση 100 Πλωτή Κύβοι Χρησιμοποιώντας DirectX ή OpenGL

ψήφοι
13

Θα ήθελα να εμφανίζει 100 κυμαινόμενο κύβους χρήση DirectXή OpenGL.

Ψάχνω είτε για κάποιο πηγαίο κώδικα του δείγματος, ή μια περιγραφή της τεχνικής. Δεν έχω πρόβλημα να πάρει περισσότερο ένα κύβο για να εμφανιστεί σωστά.

Έχω χτενισμένες στο διαδίκτυο για μια καλή σειρά από σεμινάρια και παρόλο που μιλάμε για το πώς να το κάνουμε 3Dπρωτόγονων, ό, τι δεν μπορώ να βρω είναι οι πληροφορίες σχετικά με το πώς να το κάνουμε μεγάλο αριθμό των 3Dπρωτόγονων - cubes, spheres, pyramids, και ούτω καθεξής.

Δημοσιεύθηκε 04/08/2008 στις 07:51
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
7

Λέτε ότι έχετε αρκετό πρόβλημα να πάρει ένα κύβο για να εμφανιστεί ... έτσι δεν είμαι σίγουρος αν έχετε ένα για την εμφάνιση ή όχι.

Βασικά ... βάλτε τον κωδικό σας για τη σύνταξη ενός κύβου σε μια λειτουργία, τότε απλά κλήση που λειτουργούν 100 φορές.

void DrawCube()
{
    //code to draw the cube
}

void DisplayCubes()
{
    for(int i = 0; i < 10; ++i)
    {   
         for(int j = 0; j < 10; ++j)
         {
             glPushMatrix();
             //alter these values depending on the size of your cubes.
             //This call makes sure that your cubes aren't drawn overtop of each other
             glTranslatef(i*5.0, j*5.0, 0);
             DrawCube();
             glPopMatrix();
         }
    }              
}

Αυτό είναι το βασικό περίγραμμα για το πώς θα μπορούσατε να κάνετε για αυτό. Αν θέλετε κάτι πιο αποτελεσματικό ρίξτε μια ματιά στις λίστες εμφάνισης κάποια στιγμή, αφού έχετε τα βασικά κατάλαβα :)

Απαντήθηκε 04/08/2008 στις 10:12
πηγή χρήστη

ψήφοι
6

Ναι, αν ήταν να είναι αποτελεσματικό που θα ρίξει τα πάντα στο ίδιο ρυθμιστικό κορυφή, αλλά δεν νομίζω σχέδιο 100 κύβοι θα ωθήσει κάθε GPU που παράγονται κατά τα τελευταία 5 χρόνια, έτσι θα πρέπει να είναι μια χαρά μετά τις παραπάνω προτάσεις.

Γράψτε ένα βασικό πέρασμα μέσα από την κορυφή shader, σκιά όμως που επιθυμείτε στο shader pixel. Είτε περάσει σε έναν κόσμο μήτρα και να κάνει τη μετάφραση του shader κορυφή, ή απλά να υπολογίσουμε τις παγκόσμιες θέσεις χώρο κορυφής από την πλευρά της CPU (το κάνετε αυτό, αν οι κύβοι σας πρόκειται να μείνει σταθερό).

Θα μπορούσατε να πάρετε φανταχτερό και να κάνει γεωμετρία instancing κλπ, αλλά μόλις πάρετε τα βασικά πηγαίνοντας πρώτα.

Απαντήθηκε 19/08/2008 στις 12:12
πηγή χρήστη

ψήφοι
6

Απλά χρησιμοποιήστε glTranslatef (ή το ισοδύναμο DirectX) για να σχεδιάσετε ένα κύβο χρησιμοποιώντας τον ίδιο κωδικό, αλλά κινείται το σχετικό σημείο όπου μπορείτε να σχεδιάσετε. Ίσως υπάρχει ένας καλύτερος τρόπος να το κάνουμε όμως, είμαι αρκετά νέος σε OpenGL. Να είστε βέβαιος να ρυθμίσετε την άποψη σας, ώστε να μπορείτε να τα δείτε όλα.

Απαντήθηκε 04/08/2008 στις 10:04
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more