Chciałbym stworzyć grę z wielu kostek i planuję wprowadzić ją na platformy mobilne, a także w Internecie za pomocą webgl. Mój problem polega na tym, że kiedy wykonuję wywołanie drawelements na kostkę, biorę hit na liczbę klatek na sekundę. Czy istnieje sposób, aby wykonać jedno wezwanie do wyciągnięcia karty, aby otworzyć je? Jedyna różnica między kostkami to pozycja i kolor.Najbardziej skuteczny sposób rysowania wielu identycznych obiektów?
Odpowiedz
Sam wpadłem na ten sam problem. Zadałem podobne pytanie i odpowiedziałem sobie wczoraj. Spójrz na:
Efficient way of drawing in OpenGL ES
Chcesz stworzyć swoje bufory wierzchołków i przesłać je do karty graficznej pamięci tylko raz przy użyciu gl.bufferData. Następnie użyj odwołania do tego bufora za każdym razem, gdy robisz gl.drawElements lub gl.drawArrays. Dopóki nie zmieni się zawartość sceny 3D, możesz użyć tego bufora, który zostanie załadowany do pamięci karty graficznej.
Śledź model UITableView w jaki sposób usuwają dane z komórek. Zbudowałbym obiekt, który śledzi rysowane obiekty i łączy je z Identyfikatorem. Następnie możesz po prostu wycofać je za pomocą wspomnianego identyfikatora. Jeśli wiesz, że zamierzasz narysować wiele wersji tego samego obiektu, użyj tego obiektu, aby zminimalizować renderowanie/przydzielanie.
Jeśli używasz Vertex Arrays do glDrawElements(), sugeruję zamiast tego używanie Vertex Buffer Objects. Spowoduje to zapisanie strony serwera danych (w GRAM) zamiast po stronie klienta (w RAM systemu). W ten sposób można wywoływać wywołania glDrawElements() przy znacznie mniejszej mocy procesora CPU < -> Przesyłanie danych na GPU.
Możesz także przechowywać kostki na listach wyświetlania. W ten sposób możesz użyć glTranlate(), aby przesunąć kostkę wokół, a następnie po prostu wywołaj listę wyświetlania, aby ją wyrenderować. Jedyne zastrzeżenie do korzystania z list wyświetlania jest takie, że cokolwiek robisz na liście wyświetlania, jest niezmienne; nie można zmienić wywołań na liście wyświetlania bez całkowitej rekompilacji.
OpenGL ES nie obsługuje list wyświetlania. –
- 1. Najbardziej skuteczny sposób zliczania wystąpień?
- 2. Najbardziej skuteczny sposób modyfikacji zawartości CMSampleBuffer
- 3. Najbardziej skuteczny sposób konwersji InputStream na bajt []?
- 4. najbardziej skuteczny sposób debugowania na urządzeniu Blackberry?
- 5. Najbardziej skuteczny sposób tworzenia dziennika aktywności
- 6. Python: najbardziej skuteczny sposób przekonwertować datę datetime
- 7. Najbardziej skuteczny sposób zapisu pliku do ServletOutputStream
- 8. Najbardziej skuteczny sposób ustawiania stylu za pomocą czystego javascript?
- 9. Java - Jaki jest najbardziej skuteczny sposób synchronizowania ArrayList?
- 10. Jaki jest skuteczny sposób porównywania obiektów StringBuilder
- 11. Jaki jest najbardziej skuteczny sposób tworzenia dodatkowych wątków z wątku?
- 12. Najbardziej skuteczny sposób obliczania odległości Hamminga w Ruby?
- 13. Jaki jest najbardziej skuteczny sposób dodawania odbicia do UIImageView
- 14. Najbardziej skuteczny sposób tworzenia połączonej listy z przechowywanych danych?
- 15. Najbardziej pythonic (i skuteczny) sposób gniazdowania listę parami
- 16. Najbardziej skuteczny sposób na uzyskanie kilku skrótów w Redis?
- 17. Najbardziej skuteczny sposób przechowywania adresów URL w Mysql?
- 18. Najbardziej skuteczny sposób aktualizacji za pomocą LINQ do SQL
- 19. Jaki jest najbardziej skuteczny sposób wyszukiwania zagnieżdżonych list w python?
- 20. Najbardziej skuteczny sposób tworzenia CALayer z obrazem w nim?
- 21. Najbardziej skuteczny sposób na znalezienie najbliższej liczby całkowitej w MySQL?
- 22. Jaki jest najbardziej skuteczny sposób wykrywania skrzyżowań trójkąt-trójkąt?
- 23. Jawa, najbardziej skuteczny sposób przekazać tablicę ciągów jako parametru Metoda
- 24. Najbardziej skuteczny sposób na wybranie elementu kończącego tablicę?
- 25. Najbardziej skuteczny sposób na usunięcie wszystkich zduplikowanych wierszy z tabeli?
- 26. Najbardziej skuteczny sposób na znalezienie następnego elementu w kodzie korygującym
- 27. Jaki jest najbardziej skuteczny sposób przywracania wielu baz danych w SQL 2008
- 28. Usuwanie obiektów identycznych w języku Ruby?
- 29. rysowania wielu linii BufferedImage
- 30. Przydzielanie obiektów podczas rysowania/układu?
Czy położenia kostek względem siebie zmienią się z czasem? – LarsH
Prawdopodobnie ulegną one zmianie z biegiem czasu, ponieważ chciałbym, aby ulegały zniszczeniu. – Xavier
Zobacz także: http://stackoverflow.com/questions/9352355/draw-many-of-the-same-object-quickly-in-opengl – jwrush