Στο στιγμιότυπο 14w29b υπάρχει μια νέα επιλογή στο μενού "Ρυθμίσεις βίντεο" που ονομάζεται "Χρήση VBOs":
Η ενημέρωση του στιγμιότυπου αναφέρει ότι η ενεργοποίηση του "Vertex Buffer Objects" θα πρέπει να αυξήσει τα FPS κατά 5% έως 10% κατά μέσο όρο.
Ψάχνω για μια απλή εξήγηση του τι κάνουν οπτικά τα VBOs και πώς λειτουργούν.
Η απάντηση που δόθηκε από τον Flaunting είναι σωστή, αλλά σε περίπτωση που κάποιος ενδιαφέρεται γιατί μπορεί να είναι πιο αποτελεσματικό, εδώ είναι μια εξήγηση.
Στο immediate mode (νομίζω ότι αυτή είναι η προεπιλεγμένη περίπτωση στο minecraft) όταν θέλετε να κάνετε render ας πούμε ένα τετράγωνο:
Θα δίνατε τις ακόλουθες εντολές σε κάθε καρέ (σε ψευδοκώδικα)
begin drawing
draw line from (0,0) to (1,0)
draw line from (1,0) to (1,1)
draw line from (1,1) to (0,1)
draw line from (0,1) to (0,0)
end drawing
Για ένα τετράγωνο, αυτό δεν είναι πολύ, αλλά μπορεί να υπάρχουν εκατομμύρια κορυφές σε μια σκηνή, και μπορεί να έχουν περισσότερα χαρακτηριστικά (χρώμα, κανονικό κ.λπ.). Αυτά είναι πολλά δεδομένα που πρέπει να αποστέλλονται στην GPU σε κάθε καρέ.
Χρησιμοποιώντας το VBOS, θα φορτώνατε όλα τα δεδομένα κορυφών στη μνήμη της GPU στην αρχή. Ο ψευδοκώδικας θα μπορούσε να μοιάζει ως εξής:
create VBO
load (0,0) into VBO
load (1,0) into VBO
load (1,1) into VBO
load (0,1) into VBO
load (0,0) into VBO
Ο κώδικας της OpenGL θα σας δώσει πίσω ένα 'όνομα' για αυτό το VBO (ένας μη μηδενικός ακέραιος χωρίς πρόσημο iirc). Μπορείτε στη συνέχεια να το αναφέρετε όταν θέλετε να σχεδιάσετε το τετράγωνο. Έτσι, σε κάθε καρέ, χρειάζεται να δώσετε μόνο μία εντολή σχεδίασης:
draw vertices in VBO
Ίσως χρειαστεί να ρυθμίσετε την κατάσταση σχεδίασης έτσι ώστε να χρησιμοποιεί ζεύγη κορυφών για γραμμές, αλλά για κάθε επιπλέον VBO, χρειάζεστε μόνο μία επιπλέον κλήση σχεδίασης. Στην πραγματικότητα, για στατική γεωμετρία επιπέδων (μάλλον δεν ισχύει στην περίπτωση του minecraft) μπορείτε να συνδυάσετε όλες αυτές τις κορυφές σε ένα τεράστιο VBO, αν έχετε αρκετή μνήμη GPU.
Εκπλήσσομαι που η επιτάχυνση είναι μόνο 5-10%. Αυτό πιθανώς οφείλεται στη δυναμική γεωμετρία του επιπέδου.
VBO σημαίνει Vertex Buffer Object
Από το άρθρο της Wikipedia
Το αντικείμενο Vertex Buffer Object (VBO) είναι ένα χαρακτηριστικό της OpenGL που παρέχει μεθόδους για τη μεταφόρτωση δεδομένων κορυφής (θέση, κανονικό διάνυσμα, χρώμα, κ.λπ.) στη συσκευή βίντεο για απόδοση μη άμεσης λειτουργίας. Οι VBOs προσφέρουν σημαντικά κέρδη απόδοσης σε σχέση με την απόδοση σε άμεση λειτουργία κυρίως επειδή τα δεδομένα βρίσκονται στη μνήμη της συσκευής βίντεο και όχι στη μνήμη του συστήματος και έτσι μπορούν να αποδοθούν απευθείας από τη συσκευή βίντεο.
Με απλούς όρους
Συγκεκριμένα στο minecraft Προσφέρει αύξηση της απόδοσης κατά ~10% όταν είναι ενεργοποιημένη.
Το κάνει αυτό μειώνοντας το φόρτο εργασίας στη μνήμη της CPU & RAM και αναθέτοντάς την στη μνήμη της gpu, αυτό συνιστάται μόνο αν έχετε μια εντάξει έως αξιοπρεπή κάρτα γραφικών
Αυξάνει σημαντικά την ταχύτητα μειώνοντας τον φόρτο εργασίας που απαιτείται από τον επεξεργαστή και τη μνήμη του συστήματος (RAM). Αντ' αυτού χρησιμοποιεί τη μνήμη της κάρτας γραφικών σας αυξάνοντας την απόδοση.