Plattformunabhängige Spiele



  • das einzige worauf du achten mußt ist, dass du alle api-aufrufe kapselst.

    Wobei das sicher eher leichter gesagt als getan ist, kenn mich mit OpenGL nich so aus, aber denk mal das die logische unterschiede z.B. zu directX schon imens sind. Und du dann bei bedarf zur emulation einer DirectX routine fuer OpenGL ne menge rumrechnen darfst. Bye Bye Performance

    Bsser waere sicher die Abstrakte trennlinie zwischen grafik und Spiele-Logic in deinem spiel sauber zu halten, und die eigentliche Grafik Engine in 2 versionen zu liefern, als nur die API aufrufe zu kapseln ^^

    Wenn OpenGL und directX doch nich so unterschiedlich sind, kannst halt viel kopieren ^^

    Ciao ...



  • Wäre das so zu realisieren?:

    Ich mach mir ein Interface mit Funktionsprototypen und für jede API die ich verwenden will eine entsprechende dll. z.B. OpenGL.dll und DirectX.dll

    für das interface erstell ich mir ne liste von Funktionen die das entsprechende Gegenstück aus der DLL laden in denen ich die gewünschte Funktion entsprechend nachbilde.

    Vor Programmstart muss dann eben noch die API ausgewählt werden und die enstsprechende dll geladen werden.



  • RHBaum schrieb:

    das einzige worauf du achten mußt ist, dass du alle api-aufrufe kapselst.

    Wobei das sicher eher leichter gesagt als getan ist, kenn mich mit OpenGL nich so aus, aber denk mal das die logische unterschiede z.B. zu directX schon imens sind. Und du dann bei bedarf zur emulation einer DirectX routine fuer OpenGL ne menge rumrechnen darfst. Bye Bye Performance

    Bsser waere sicher die Abstrakte trennlinie zwischen grafik und Spiele-Logic in deinem spiel sauber zu halten, und die eigentliche Grafik Engine in 2 versionen zu liefern, als nur die API aufrufe zu kapseln ^^

    Wenn OpenGL und directX doch nich so unterschiedlich sind, kannst halt viel kopieren ^^

    Mit Ausnahme des letzten Postings hat er doch gar nicht behauptet, unter Windows DirectX einsetzen zu wollen. 😕


  • Mod

    RHBaum schrieb:

    das einzige worauf du achten mußt ist, dass du alle api-aufrufe kapselst.

    Wobei das sicher eher leichter gesagt als getan ist, kenn mich mit OpenGL nich so aus, aber denk mal das die logische unterschiede z.B. zu directX schon imens sind. Und du dann bei bedarf zur emulation einer DirectX routine fuer OpenGL ne menge rumrechnen darfst. Bye Bye Performance

    nein, nicht wirklich. der weg ist ja entweder:
    app -> dx -> driver
    oder
    app -> ogl -> driver
    dx und ogl ist also ein layer der die treiber kapselt und da man dort nicht viel performance verlieren möchte, sind beide recht driver-nah, was bedeutet das kaum umrechnungen vorhanden sind die performance kosten würde, somit gibt es auch zwischen ogl und d3d keine großartigen umrechnungen.

    die performance hängt zum großteil von der verarbeitung von resourcen durch die graphikhartware ab.
    resourcen wiederrum lädt man zur laufzeit selten in die hardware, weil es selbst im optimalen fall zu langsam wäre die daten immer neu zu laden.
    das einzige was man also zur laufzeit macht, ist der aufruf von ein paar kontrollfunktionen, alles andere blockt die asynchrone abarbeitung und hat eh schlechte performance zum resultat.

    Bsser waere sicher die Abstrakte trennlinie zwischen grafik und Spiele-Logic in deinem spiel sauber zu halten, und die eigentliche Grafik Engine in 2 versionen zu liefern, als nur die API aufrufe zu kapseln

    besser ist so auslegbar.... der arbeitsaufwand würde sich pro plattform steigern extrem steigern (jedesmal die graphikengine erneut erstellen), du müßtest dann nicht nur die grafikengine in mehreren versionen erstellen und pflegen, sondern auch die daten und tools. alles natürlich mit abhängigkeiten voneinander und nicht zu vergessen, dass graphik nicht alles ist. input,network,resourcemanagement würde ebenfalls neu geschrieben werden müssen.

    Wenn OpenGL und directX doch nich so unterschiedlich sind, kannst halt viel kopieren

    ich glaube er wollte plattformunabhängig und nicht auf ogl/d3d limitiert sein.

    rapso->greets();



  • rapso schrieb:

    dx und ogl ist also ein layer der die treiber kapselt und da man dort nicht viel performance verlieren möchte, sind beide recht driver-nah, was bedeutet das kaum umrechnungen vorhanden sind die performance kosten würde, somit gibt es auch zwischen ogl und d3d keine großartigen umrechnungen.

    Ich glaube, er meinte eher, daß eine App die zunächst nativ OpenGL nutzt und deren Matrizen-Pointer-Format und deren Koord.system, beim Nutzen von DirectX dann diesen Kram jeden Frame umrechnen muß.
    Ob das allerdings soviel Performanz zieht ist 'ne andere Frage... 😉


  • Mod

    Sgt. Nukem schrieb:

    rapso schrieb:

    dx und ogl ist also ein layer der die treiber kapselt und da man dort nicht viel performance verlieren möchte, sind beide recht driver-nah, was bedeutet das kaum umrechnungen vorhanden sind die performance kosten würde, somit gibt es auch zwischen ogl und d3d keine großartigen umrechnungen.

    Ich glaube, er meinte eher, daß eine App die zunächst nativ OpenGL nutzt und deren Matrizen-Pointer-Format und deren Koord.system, beim Nutzen von DirectX dann diesen Kram jeden Frame umrechnen muß.
    Ob das allerdings soviel Performanz zieht ist 'ne andere Frage... 😉

    ich weiß, das sollte ja auch die antwort darauf sein.

    nochmal explizit.
    d3d muss diese suboptimalen matrizen usw. auch jedesmal transponieren. ati karten z.b. haben nur vertexshader, kein TnL mehr, sie müssen also mit 4 dp3 die transformation durchführen, das setzt normale matrizen voraus. die TnL hardware hat auch kein transpose, also....

    rapso->greets();



  • Vertexwahn schrieb:

    syntax-highlighting ist für schwächlinge! echte Klingonen programmieren in notepad, und wenn sie eine IDE sehen jagen und töten sie diese.

    hmm, der satz kommt mir irgendwie bekannt vor, nur was hat das jetzt mit meiner frage zu tun?



  • also nur 90% der spielr auf dem PC ham windows...
    windows (zumindest NTund folgende...)baaasieren nicht auf DOS sondern ehre auf MAC OS X und die PS basiert meines wiissens auch net auf DOs denn doss ist nic der ursprung von allem sonder nur der ursprung von MS und der Blödheit



  • shade37337 schrieb:

    also nur 90% der spielr auf dem PC ham windows...
    windows (zumindest NTund folgende...)baaasieren nicht auf DOS sondern ehre auf MAC OS X und die PS basiert meines wiissens auch net auf DOs denn doss ist nic der ursprung von allem sonder nur der ursprung von MS und der Blödheit

    *tätschel
    und nu geh wieder cs spielen...



  • 😃

    rapso schrieb:

    ich weiß, das sollte ja auch die antwort darauf sein.

    Oh sorry... :schäm:



  • Vertexwahn schrieb:

    mit was sollte ich mich auskennen wenn ich Plattform unabhängige Spiele realisieren möchte?

    100% der Spieler nutzen Windows als Betriebssystem

    Glatt gelogen.



  • Java3d ist auch ganz lustig für plattformunabhängige Spielchen, machen das grad inner Uni.



  • shade37337 schrieb:

    also nur 90% der spielr auf dem PC ham windows...
    windows (zumindest NTund folgende...)baaasieren nicht auf DOS sondern ehre auf MAC OS X und die PS basiert meines wiissens auch net auf DOs denn doss ist nic der ursprung von allem sonder nur der ursprung von MS und der Blödheit

    Dos wurde aber auch nicht vom guten herr gates "erfunden" das hat er sich meines wissens auch nurangeeignet, sein Dos war eigentlich eines der schlechteren weil kein reales 16bit system oder so ähnlich.

    hab das nur noch so halb im hinterkopf




Anmelden zum Antworten