Einflussnahme auf Displaylisten
-
Hallo zusammen!
Kurz und bündig:
Haben Veränderungen der Lichtverhältnisse eigentlich Einfluss auf geladene Displaylisten? Wenn nicht, wie wird denn sowas in der Spieleentwicklung gelöst?
Es muss doch möglich sein, die Architektur eines 3DModells aus Performance-Gründen im Voraus zu rendern und zur eigentlichen Animationszeit Einfluss auf die Lichtverhältnisse zu nehmen. Ich kann doch nicht nur aufgrund sich verändernder Lichtquellen mit jedem Frame die komplette Szene rendern!Danke!
Grüße,
TS++
-
normalerweise wird jedes objekt jedes frame gezeichnet, wenn du displaylisten benutzt, dann erlaubst du dem treiber diese dinge zu optimieren, trotzdem zeichnet der die jedesmal neu.
in "richtigen spielen" benutzt man displaylisten eher nicht (ist ja auch openGL spezifisch und in DX garnicht möglich zur zeit). dort muss man die optimierungen selber vornehmen so gut es geht. deswegen kann es sein, dass man besser optimiert als der treiber, weil man mehr daten vorliegen hat bzw. sie besser aufbereitet hat (z.B. indizierte polygone im VRam), andererseits kann es auch ein wenig langsammer werden, weil der treiber hardwareabhängige optimierungen macht, an die man von aussen vielleicht nicht drankommt.wenn man ein objekt in eine displaylist compiliert, kann man in oGL sicherlich noch lichtquellen setzen um diese objekte zu rendern, da seh ich eigentlich nicht das probllem.
rapso->greets();
-
Servus rapso!
(ich glaub wir beide machen ein eigenes Forum auf)
Hier im Forum gibt's ja einige, die sofort einen Schreikrampf kriegen, wenn man das Wort 'displaylist' in den Mund nimmt!
Würdest du mir von Displaylisten eher abraten, wenn es um Echtzeitanwendungen geht? Denn nach deiner Antwort zu urteilen, müsste es möglich sein, mit einer eigenen Implementierung von ViewFrustrum- und OcclusionCulling die mit Hilfe von DisplayListen erreichbare Framerate zu übertreffen.Du hast ja auf diesem Gebiet mit Sicherheit mehr Erfahrung als ich.
Lässt du lieber die Finger von DisplayListen und lohnt sich's?Grüße,
TS++
-
eigene implementierung von occlusionculling und VFC... ?
das macht oGL nicht für dich, das mußt du sowieso selber implementieren oder explizit ansprechen auf der hardware.
wenn du die absolute optimierung haben möchtest, dann reichen die displaylitsen nicht, aber an sonsten sind die echt gut!
wenn du z.B. viele kleine eigenschaften änderst, z.B. für texturen oder desgleichen, dann sind displaylisten sehr viel fixer als du es machen könntest mit einzelnen aufrufen (wohl fixer als man es mit DX hinkriegen kann).
und wenn dir die performance reicht, dann sind displaylisten das beste was du nutzen kannst, denn die alternative sieht oft so aus, dass du für jede grafikkarte deine optimierung schreiben mußt, sogar einzelne versionen vom selben hersteller der grafikkarte können sich manchmal unterscheiden... wenn du displaylisten nutzt, dann muss der treiber die anpassungen vornehmen.wenn du irgendwann denkst "meiner karte sollte xx-millionen polygone darstellen, sie macht aber nur 25% davon, ich brauch mehr" dann kannst du optimieren.
also das ist meine meinung, falls jemand was anderes meint, nur her damit
rapso->greets();
ps. forum hätte ich schon längst, wenn ich nen webmaster für meine hp hätte... hab schon seit monaten ne grafisch fertige hp auf platte... nur noch composen... aber ich komm net dazu, sonst gäbe es ein forum :D.. und das wo du dich doch gerade regestriert hast *g*
-
rapso->danke();
Ich hab jetzt in allen visuellen Komponenten meines Systems eine Option 'useDisplayList' eingebaut, mit der ich, falls gewünscht, eine Vorkompilierung erreichen kann. Damit kann ich bereits beim Initialisieren festlegen, ob beim eigentlichen Rendervorgang wie gehabt die Vektordaten geladen werden, oder ob zuerst eine Displayliste erzeugt wird, die mit 'render()' automatisch geladen wird.
Damit kann ich ja später für alle visuellen Komponenten relativ leicht testen, wieviel mir die Displaylisten bringen( ich vergess natürlich das Culling nicht ).Mal sehn, so langsam nimmt das ganze Gestalt an!
(es ist nur wahnsinnig zeitaufwending, ein etwas umfangreicheres System speichersparend und geschwindigkeitsoptimiert zu proggen)Grüße,
TS++