Προγραμματισμός

Γνώση Υπολογιστών >> Προγραμματισμός >  >> Προγραμματισμός Visual Basic

Πώς μπορώ να χρησιμοποιήσω το C για να απεικονίσω ένα πλέγμα σε περιβάλλον 3D;

Το ίδιο το C δεν έχει ενσωματωμένες δυνατότητες απεικόνισης 3D. Θα χρειαστεί να χρησιμοποιήσετε μια βιβλιοθήκη που χειρίζεται την απόδοση γραφικών. Ακολουθούν μερικές δημοφιλείς επιλογές και πώς μπορείτε να προσεγγίσετε την απεικόνιση ενός πλέγματος:

1. OpenGL: Μια ευρέως χρησιμοποιούμενη, ισχυρή και σχετικά χαμηλού επιπέδου βιβλιοθήκη. Σας δίνει πολύ έλεγχο, αλλά απαιτεί περισσότερη χειρωνακτική εργασία.

* Εκπροσώπηση πλέγματος: Συνήθως θα αντιπροσωπεύετε το πλέγμα σας χρησιμοποιώντας κορυφές (συντεταγμένες 3D) και πρόσωπα (δείκτες στην κορυφή της σειράς που καθορίζουν τρίγωνα ή άλλα πολύγωνα). Αυτό μπορεί να μοιάζει:

`` `c

typedef struct {

float x, y, z;

} Vertex;

typedef struct {

μη υπογεγραμμένο int a, b, c; // δείκτες στη συστοιχία κορυφών

} Πρόσωπο;

// Παράδειγμα δεδομένων ματιών

Vertex Vertices [] ={

{0.0f, 0.0f, 0.0f},

{1.0f, 0.0f, 0.0f},

{0.0f, 1.0f, 0.0f},

// ... Περισσότερες κορυφές

};

Πρόσωπα προσώπου [] ={

{0, 1, 2}, // τρίγωνο που ορίζεται από τις κορυφές 0, 1 και 2

// ... περισσότερα πρόσωπα

};

`` `

* Κωδικός OpenGL (απλοποιημένος): Αυτό είναι ένα εξαιρετικά απλοποιημένο παράδειγμα. Ο έλεγχος σφαλμάτων και η λεπτομερέστερη ρύθμιση παραλείπονται για συντομία.

`` `c

#include // ή glfw3.h εάν χρησιμοποιείτε glfw

// ... Vertex και Face Data όπως φαίνεται παραπάνω ...

άκυρη οθόνη () {

glclear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

Glbegin (Gl_triangles); // ή gl_quads, gl_polygon ανάλογα με τα πρόσωπά σας

για (int i =0; i glvertex3fv (&κορυφές [πρόσωπα [i] .a]);

glvertex3fv (&κορυφές [πρόσωπα [i] .b]);

glvertex3fv (&κορυφές [πρόσωπα [i] .c]);

}

glend ();

glflush ();

}

int main (int argc, char ** argv) {

Glutinit (&argc, argv);

// ... Ρύθμιση παραθύρων ...

glutdisplayfunc (οθόνη);

glutMainLoop ();

επιστροφή 0;

}

`` `

* Πλεονεκτήματα: Ο λεπτόκοκκο έλεγχο, η ευρέως υποστηριζόμενη, η καλή απόδοση.

* μειονεκτήματα: Η καμπύλη πιο απότομης μάθησης, πιο λεπτομερής κώδικας, απαιτεί τη διαχείριση της κατάστασης OpenGL.

2. GLFW + GLAD + OPENGL: Αυτή είναι μια πιο σύγχρονη προσέγγιση από τη χρήση μόνο γλουτ σε γλουτ. Το GLFW χειρίζεται τη δημιουργία και την είσοδο παραθύρων, ενώ το GLAD φορτώνει τις λειτουργίες OpenGL. Αυτό γενικά προτιμάται έναντι του Glut για νέα έργα.

* Πλεονεκτήματα: Καθαριστική αρχιτεκτονική από το γλουτέν, καλύτερη υποστήριξη cross-platform.

* μειονεκτήματα: Ελαφρώς πιο σύνθετη ρύθμιση.

3. Βιβλιοθήκες υψηλότερου επιπέδου: Αυτά τα αφηρημένα μακριά πολλά από τα στοιχεία OpenGL χαμηλού επιπέδου.

* SDL2 (απλό στρώμα DirectMedia): Ενώ κυρίως για το 2D, το SDL2 μπορεί να χρησιμοποιηθεί με OpenGL για 3D απόδοση. Απλοποιεί τη διαχείριση παραθύρων και εισροών.

* Αγαπητέ imgui: Εξαιρετική για τη δημιουργία διεπαφών χρήστη (UI) στην κορυφή της απεικόνισης 3D, επιτρέποντάς σας να προσθέσετε χειριστήρια, εμφανίσεις πληροφοριών κλπ. Χρησιμοποιείται συχνά με API OpenGL ή άλλα API γραφικών.

4. Άλλες βιβλιοθήκες: Υπάρχουν πολλές άλλες βιβλιοθήκες γραφικών 3D, αλλά μπορεί να απαιτούν περισσότερες εξαρτήσεις ή να έχουν συγκεκριμένες εκτιμήσεις αδειοδότησης.

Βήματα για απεικόνιση:

1. Επιλέξτε μια βιβλιοθήκη: Επιλέξτε OpenGL (με το GLFW και το GLANS COUSTERED) ή μια επιλογή υψηλότερου επιπέδου με βάση τις απαιτήσεις της εμπειρίας και του έργου σας.

2. Ρυθμίστε το περιβάλλον ανάπτυξης: Εγκαταστήστε την επιλεγμένη βιβλιοθήκη και τις εξαρτήσεις της (όπως ένας μεταγλωττιστής, ο σύνδεσμος κ.λπ.).

3. αντιπροσωπεύουν τα δεδομένα του ματιών σας: Δομή των δεδομένων κορυφής και προσώπου όπως φαίνεται στο παραπάνω παράδειγμα. Μπορείτε να φορτώσετε αυτά τα δεδομένα από ένα αρχείο (π.χ. OBJ, STL).

4. Γράψτε τον κωδικό απόδοσης: Χρησιμοποιήστε τις λειτουργίες της βιβλιοθήκης για να δημιουργήσετε ένα παράθυρο, να ρυθμίσετε το πλαίσιο OpenGL, να φορτώσετε shaders (αν χρησιμοποιείτε shaders, το οποίο είναι κοινό με το μοντέρνο OpenGL) και σχεδιάστε το πλέγμα.

5. Συγκεντρώστε και εκτελέστε: Δημιουργήστε τον κωδικό C σας και εκτελέστε τον για να δείτε την απεικόνιση 3D.

Θυμηθείτε ότι ο αποτελεσματικός προγραμματισμός γραφικών 3D περιλαμβάνει προγραμματισμό shader (GLSL για το OpenGL) για τον έλεγχο του φωτισμού, των υλικών και άλλων οπτικών εφέ. Ξεκινήστε με ένα απλό παράδειγμα για να κάνετε ένα βασικό πλέγμα πριν προσθέσετε πολυπλοκότητα. Υπάρχουν πολλά μαθήματα OpenGL που είναι διαθέσιμα στο διαδίκτυο για να σας βοηθήσουν να μάθετε τα βασικά στοιχεία.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα