Was kommt nach DirectX??



  • Moinsen...
    Ich habe vor kurzem gelesen, dass mit Windows Longhorn die Entwicklung von DirectX stoppt, und des durch MS Graphics Foundation (<- oder so???) ersetzt wird. ich habe mir über das ding mal ne präsentation angesehen, und da viel mir auf, dass sich das alles nur um grafik dreht... (sagt ja auch schon der name). nun frage ich mich, wenn direct!!!X!!! (nicht nur 3D) nicht mehr weiterentwickelt wird, was ist dann mit den anderen komponenten?? wird mictrosoft da auch was anderes für rausbringen?? oder muss man dass dan alles mit der WinAPI machen??
    Da das alles ungewiss ist, habe ich mich schonmal nach alternativen umgesehen. für Grafik gibs da natürlich nur OGL. ween den anderen komponenten hab ich mal bissl gegoogled:
    DirectSound -> OpenAL
    DirectInput -> OpenIL
    DirectPlay -> OpenNL aka. HawkNL
    DirectMusic -> ??????Kennt da einer ne alternative????
    DirectShow -> habs zwar nur überflogen, aber ich glaube, OpenML ist so ähnlich.



  • winapi wirds auch nichmehr geben



  • aso.........
    und wie soll man dann überhaupt noch audio/input/network/etc. machen, ohne auf 3rd party produkte zurück zu greifen??? gibt es dafür von ms nix eigenes mehr??
    dann muss man wohl alternative apis nehmen... ode rgeht das auch nicht mehr??
    wie findet ihr denn die aufgezählten alternativen, hat da schon jemand erfahrung? und kennt jemand direcmusic und directshow ähnliche apis?



  • ab wann soll es denn direct x und winapi nicht mehr geben?



  • Babbo schrieb:

    aso.........
    und wie soll man dann überhaupt noch audio/input/network/etc. machen, ohne auf 3rd party produkte zurück zu greifen??? gibt es dafür von ms nix eigenes mehr??
    dann muss man wohl alternative apis nehmen... ode rgeht das auch nicht mehr??
    wie findet ihr denn die aufgezählten alternativen, hat da schon jemand erfahrung? und kennt jemand direcmusic und directshow ähnliche apis?

    Es gibt genug Alternativ-APIs zu DirectX. Im 3D-Bereich zwar nur OpenGL, aber es gibt wie du richtig sagst dann ja auch noch OpenAL, und nicht zu vergessen die SDL (www.libsdl.org), die mit ein paar Plugins (SDL_net, SDL_image...) aufgeruestet eigentlich alles bietet, was DirectX auch kann, und dabei sogar Plattformunabhaengig (UT2003/UT2004 benutzen z. B. die SDL+OpenGL fuer ihre Linux-Version).

    Du wirst sicher nicht auf die WinAPI zurueckgreifen muessen. Ausserdem bin ich ueberzeugt, dass die MS ganz sicher auch die anderen DirectX-Komponenten irgendwie in Longhorn/Graphics Foundation reinbringt. Alles andere waehre Schwachfug



  • Und DDraw7 kann man ja auch nicht mehr benutzen.

    Bye, TGGC (Zu viele Primitve hier.)



  • @Babbo,
    es wird auf jeden Fall so etwas wie DirectX für Longhorn rauskommen. Oder glaubt wirklich jemand von euch, dass Microsoft es zulässt, dass Entwickler mit 3rd party Komponenten arbeiten. Solche Software würde sich ja dann viel zu leicht auf andere Platformen portieren lassen 🙂 Über ein neues DirectX habe ich jedoch auch noch nichts gelesen.



  • Es wird vielleicht einen anderen Namen haben; ein paar Methoden werden anders heißen usw aber ich denke dennoch, dass im Kern das meiste gleich bleiben wird. Hätte doch nur Nachteile, wenn sie alles ändern würden (sowohl für MS als auch für die Entwickler).



  • obwohl ja ein schöneres design von DX nich allzu schlecht wär...



  • otze schrieb:

    obwohl ja ein schöneres design von DX nich allzu schlecht wär...

    Stimmt.
    Aber wenn ich mir die bisherigen MS-APIs anschaue (WinApi, MFC, DX etc.) habe ich Zweifel, dass die dazu in der Lage sind 🙄



  • @leech: AFAIK sobald longhorn kommt.
    @Blue-Tiger: es gibt zwar viele APIs, aber ich habe immer noch keine gefunden, die DirectMusic ähnelt... oder kann SDL das auch? (ich meine den Kram mit MIDIs, DLSs, etc.) also nochmal an alle, kennt jemand so eine?
    @TGGC naja, aber ich denke doch, dass ein "einfaches" update der api schon was anderes ist, als ein komplett neues OS. außerdem ist es ja nur möglich, DD noch zu nutzen, da COM abwärtskompatibel is (schlagt mich nicht, wenn das jetz irgendwie falschg formuliert ist), und davon geht ms ja schon mit managed directx weg.



  • interpreter schrieb:

    otze schrieb:

    obwohl ja ein schöneres design von DX nich allzu schlecht wär...

    Stimmt.
    Aber wenn ich mir die bisherigen MS-APIs anschaue (WinApi, MFC, DX etc.) habe ich Zweifel, dass die dazu in der Lage sind 🙄

    Solange sie sich nicht an OpenGL's "Design" (WTF??) halten, ist alles in Butter! 🤡 👍



  • Sgt. Nukem schrieb:

    Solange sie sich nicht an OpenGL's "Design" (WTF??) halten, ist alles in Butter! 🤡 👍

    Öh, was genau findest du daran so schlecht? Ok, es ist C und funktionsbasierend, viel Design ist auch nicht dabei, aber die Namen sind eindeutig und man kann sehr sauberen Code schreiben, und selber kapseln.

    Naja, also so lange OGL-Progs noch laufen werden, bin ich zufrieden, und interessieren tut mich sowieso nur OGL 2.0.



  • Ich habe prinzipiell nichts gegen MS-Apis oder DirectX, wenn sie nur über
    die Jahre gleichbleiben würden.

    OpenGL wurd 1992 released und ist heute immer noch zu den damaligen Programmen
    kompatibel. Ich wüßte jetzt keine Funktion die gestrichen, umgebaut oder umbenannt wurde.
    Ich will halt nicht jedes Jahr ein "neues" DirectX lernen.

    Ja ok, über das Extension Interface kann man sich streiten, aber da es eine Extension ist rechnen die meisten Programme damit dass das Feature NICHT da ist
    und reagieren darauf.
    In sofern finde ich diese Lösung besser da man von der Versionsnummer unabhängig ist.

    Für GUI benutze ich sowieso nur noch Wrapper (wxWindows, früher Qt und Gtkmm),
    die sind von der Benutztbarkeit meistens etwas angenehmer.



  • Kane schrieb:

    Ich habe prinzipiell nichts gegen MS-Apis oder DirectX, wenn sie nur über
    die Jahre gleichbleiben würden.

    OpenGL wurd 1992 released und ist heute immer noch zu den damaligen Programmen
    kompatibel. Ich wüßte jetzt keine Funktion die gestrichen, umgebaut oder umbenannt wurde.
    Ich will halt nicht jedes Jahr ein "neues" DirectX lernen..

    Ich denke, da ist der Unterschied zu DX nicht groß. Ob ich nun zur Ausführung
    eines Programms neue Extensions installieren muss oder mein DX update, dass
    kommt aufs Gleiche raus.

    Auch bei der Entwicklung sehe ich nicht den Unterschied. Alte Programme sind
    100%ig kompatibel, da alte DX Versionen generell erhalten bleiben.

    Ok die neuste Version hat dann ein paar Unterschiede. Aber die machen sich
    zumeist nur in neuen Interfaces und kleinen Unterschieden in den Funktions-
    aufrufen bemerkbar. Und dadurch entsteht ja auch ein Art Evolution von
    DX - schließlich ist mitleerweile vieles anderes als 1992 😉



  • otze schrieb:

    winapi wirds auch nichmehr geben

    afaik doch...

    WGF is als Direct3D 10 unter einen decknamen zu sehen und wird sich von DirectX 9.0 vom aufbau her vermutlich nicht extrem unterscheiden ( außer natürlich dass es nicht mehr auf COM basiert, VertexShader 4.0 unterstützt usw... )

    da microsoft ja mit COM aufhört, musste das mal passieren

    was mit den andren komponenten passiert weis ich auch nicht genau, aber ich denke nicht, dass das alles einfach ausstirbt.

    interpreter schrieb:

    otze schrieb:

    obwohl ja ein schöneres design von DX nich allzu schlecht wär...

    Stimmt.
    Aber wenn ich mir die bisherigen MS-APIs anschaue (WinApi, MFC, DX etc.) habe ich Zweifel, dass die dazu in der Lage sind 🙄

    was gibts an der WinApi auszusetzen!?



  • Was gibts an DX auszusetzen? Ist ja eine schöne strike COM-Library. Immer noch besser als etwas funktionsorientiertes dauernd wrappen zu müssen!

    MfG SideWinder



  • was gibts an der WinApi auszusetzen!?

    lol, dass muss man nicht fragen, wenn man schon einmal mit der WinAPI gearbeitet hat. Die WinAPI ist ein riesiger undurchschauberer Brocken an unglaublich hässlichen C Funktionen mit einer absolut hirnrissigen Namenskonvention.

    Willst du mir nicht glauben? Schlagen wir einfach mal die MSDN auf

    HANDLE CreateFile(LPCTSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode,  LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition,DWORD wFlagsAndAttributes,HANDLE hTemplateFile);
    

    bevor Fragen aufkommen:
    Ja, dass soll C sein!
    Nein, dass ist kein Scherz, dass steht wirklich so in der MSDN!
    Ja, dass ist keine Ausnahme, sondern ein treffendes Beispiel.
    Ja, es gibt noch schlimmere Funktionen, mit Parameter, die einfach reserviert für Erweiterungen sind und per default NULL sind.

    und wenn wir schon bei absolut hirnrissigen Namenskonventionen sind, OpenGL hat das ja sogar bei den Funktionsnamen.

    Und zu DirectX

    BOOL InitDirectDraw(HWND hwnd) {
      LPDIRECTDRAW lpDDraw = NULL;
      if(DirectDrawCreate(NULL, &lpDDraw, NULL)!= DD_OK) {
        MessageBox(hwnd, "Konnte DirectDraw-Objekt nicht erzeugen.", NULL, MB_OK);   
        return FALSE;
      }
      if(lpDDraw->lpVtbl->QueryInterface(lpDDraw, &IID_IDirectDraw7, (void **)&lpDDraw7)!=DD_OK) {
        MessageBox(hwnd, "Keine Schnittstelle zu DirectDraw7 vorhanden", NULL, MB_OK);
        return FALSE;
      }
      lpDDraw->lpVtbl->Release(lpDDraw);
      //...
    

    ja, dass ist die directX Art um C++ zu programmieren. Jemand, der nicht den ganzen Tag Crack nimmt hätte die Api wahrscheinlich so gebaut, dass man das gleiche, was da oben steht mit

    DirectDraw ddraw(7,0);
    

    erreichen kann.

    Immer noch besser als etwas funktionsorientiertes dauernd wrappen zu müssen!

    sag blos nicht, dass du dieses DirectX gewurschtel ungewrapped in deinem Code benutzt 😮



  • @kingruedi:
    1. Hier DirectDraw7 Als Beipiel ranzuziehen ist unfair. Wir sind bei 9.
    ➡

    if( NULL != (D3D9 = Direct3DCreate9(D3D_SDK_VERSION)) )
        return true;
    

    Als DirectDraw7 noch "in" war wollte MS halt die C Leute nicht vergraulen. Das kannst du ihnen nicht vorwerfen

    HANDLE CreateFile(LPCTSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition,DWORD wFlagsAndAttributes,HANDLE hTemplateFile);

    Was ist daran so schlimm? Welche Namenskonventionen stören dich denn so?

    Ja, es gibt noch schlimmere Funktionen, mit Parameter, die einfach reserviert für Erweiterungen sind und per default NULL sind

    Hat IMHO den Sinn, dass man das was anno dünnemals für Win2000 geschrieben wurde für Windows XP nicht ändern muss. Find ich sinnvoll.

    Das die ganze Winapi C ist ist grundsätzlich sinnvoll, weil man so z.B. leicht aus anderen Programmiersprachen darauf zurückgreifen kann, z.B. VisualbBasic oder Delphi.
    Wenn dir das nicht passt: Nimm die MFC.



  • Alte Programme sind
    100%ig kompatibel, da alte DX Versionen generell erhalten bleiben.

    Lol, ich würde dir so gerne glauben... Schon mal versucht ein älteres DirectX Spiel (Thief, System Shock 2, etc) zu spielen?
    Klar es geht, aber der Software-Renderer von DX rockt nicht gerade und der
    HAL-Renderer wurde aus platzgründen rausgenommen, tja...

    Oder mal anderes gesagt, DX ist effektiv nur maximal 2 Versionen rückwärtskompatibel.


Anmelden zum Antworten