Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// Punkte struct PointS { GLint X; GLint Y; }; // Farben struct ColorS { GLubyte R; GLubyte G; GLubyte B; GLubyte A; }; // Graphikobjekte struct GraphicS { GLenum Mode; vector <PointS> Point; vector <PointS> TPoint; vector <ColorS> Color; unsigned short Z; unsigned long Texture; bool Blend; GLenum SFactor; GLenum DFactor; GLenum Equation; }; |
Administrator
Zurzeit ist mein Ansatz, einen vector zu erstellen (dynamisches Array), welcher alle Graphikelemente beeinhaltet, anschließend werde diese mit Quicksort anhand ihrer Position auf der Z Ebene sortiert, der Struct sah bei meinem Testdurchlauf in etwa so aus:
Quellcode
1 2 3 4 5 // Graphikobjekte struct GraphicS { /* super viel Zeugs */ };
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Administrator
Dazu eignet sich der Z-Buffer hervorragend. Es gibt auch Fälle, wo sortieren Sinn machen kann: statische Geometrie. Diese solltest du möglichst schon in der Reihenfolge in der Liste haben und ohne Z-Buffer rendern. EDIT: Für Transparente Objekte muss man per Hand sortieren (Danke für die Erinnerung David!).Zitat
Er muss in der Lage sein, verschiedene Z Ebenen zu behandeln, das heißt gewisse Dinge zuerst zu zeichnen und andere erst hinterher.
Das "welche" ist nicht das Problem - das "AlphaBlending Art X oder nicht" ist der Punkt. Wichtig ist, dass du zweckes Performance Primitives serselben Alpha-Blending Einstellung möglichst zusammen zeichnest.Zitat
Er muss in der Lage sein, Alphablending auszuführen (unzwar mit sämtlichen Kombinationsmöglichkeiten die sich aus SFactor, DFactor und Euqation ergeben).
Batching: Primitives mit derselben Textur zusammen in einem Draw-Call zeichnen! Farben sind eigentlich unkritisch, das geht unabhängig performant gleichschnell.Zitat
Er muss natürlich auch in der Lage sein, das Texturieren und Einfärbungen (Eckpunkte von Vertices) an Primitiven vorzunehmen.
Administrator
Allein durch andere ClientStates muss es eh eigener Draw-Call sein - dann muss man natürlich auch sortieren Ja Korrekterweise ohne Z-Buffer!Transparenz erfordert Sortieren, da geht nix mit Z-Buffer ...
Administrator
Werbeanzeige