Brauche ich die WinApi ?



  • > Spieleprogrammierer von Half-Life & co. arbeiten. Weiß da jemand was drüber?

    Die arbeiten alle mit MSVC

    Ich schließe mich der Meinung TGGC's an - es reichen sehr bescheidene Kenntnisse über die WinAPI um mit D3D oder ähnlichen Ergebnisse zu erzielen

    > MFC + DirectX

    pfui!!! images/smiles/icon_wink.gif

    > Timer

    Es gibt doch GetTickCount images/smiles/icon_wink.gif



  • Original erstellt von xroads42:
    Oder wie willst du sonst nen konstante FPS rate erzeugen

    wer will denn sowas tun?

    Und auch mit DX kann man problemlos anfangen, ohne was von WINAPI (kann man das essen?) gehört zu haben.



  • Hi!
    Ich würde dir empfehlen, dir die WinAPI ein bischen näher anzuschauen! Auch wenn du mit DircetX codest, brauchst du ein wenig davon z.B.: für Splash screen's,...
    cu
    LUk01 images/smiles/icon_cool.gif



  • lies dir die tutorials auf win-api.de durch.
    das müsste reichen.



  • Wo wir gerade dabei sind: Gibt es hier im Forum jemanden, der keinerlei Kenntnisse der WinAPI hat (außer natürlich Fenster erstellen images/smiles/icon_biggrin.gif ), aber trotzdem schon ein, na ja, "anspruchsvolles" Spiel ( = kein simpler Arcade-Shooter oder Tetrisklon) geproggt hat?
    Ich fange nämlich an mir sorgen zu machen, da ich von WinAPI prinzipiell null Ahnung hab... images/smiles/icon_rolleyes.gif

    ...Natürlich meine ich damit auch, dass derjenige kein MFC oder VCL oder ähnliches benutzt.

    [ 04.08.2001: Beitrag editiert von: D@nm@n ]



  • Schade ich wollt grade antworten ich, aber dann hab ich, kein MFC gelesen, sag mal bleibt denn hier noch ne Möglichkeit zum programmieren überhaupt noch übrig wenn du hier alles ausschließt, (außer flei dos) also irgendetwas solltest du schon lernen und so schwer is die Api ja auch nicht, wenn du schon ein Fenster anzeigen kannst dann weißt du doch schon alles, der Rest is doch nur noch Ergänzung von Nachrichten Timern, Grafik etc. mehr is es doch auch nicht.



  • wieviel winapi ist in quake3 und co denn schon drin?
    das ist doch auch nicht viel mehr als ein fenster erstellen oder?



  • Ähm, kleine Bemerkung am Rande:
    Kein Windowsprogramm kommt an der WinAPI vorbei!!
    MFC endet bei WinAPI (kapselt diese nur) und sogar ein Konsolenprogramm bekommt vom Compiler WinAPI-Code verpasst um überhaupt zu laufen, denn:

    Kein WinAPI, kein Windowsprogramm images/smiles/icon_wink.gif



  • Original erstellt von D@nm@n:
    Wo wir gerade dabei sind: Gibt es hier im Forum jemanden, der keinerlei Kenntnisse der WinAPI hat (außer natürlich Fenster erstellen images/smiles/icon_biggrin.gif ), aber trotzdem schon ein, na ja, "anspruchsvolles" Spiel ( = kein simpler Arcade-Shooter oder Tetrisklon) geproggt hat?
    [ 04.08.2001: Beitrag editiert von: D@nm@n ]

    Wieviel Leute im Forum _mit_ WinApi Kenntnissen haben ein anspruchsvolles Spiel programmiert?
    Ich habe überhaupt noch nie _anspruchsvolle_ Spiele gemacht. Trotzdem würde ich sagen, das ich relativ viel gemacht habe (und dementsprechend auch einige Dinge weiss), weil ich mich schon seit 8 Jahren (5 davon PC) mit Spieleprogrammierung als Hobby beschäftige.
    BTW: WinApi kann ich nicht



  • Original erstellt von D@nm@n:
    Wo wir gerade dabei sind: Gibt es hier im Forum jemanden, der keinerlei Kenntnisse der WinAPI hat (außer natürlich Fenster erstellen images/smiles/icon_biggrin.gif )

    Das Erstellen eines Fensters kannst du dir sogar auch noch sparen, wenn du DInput benutzt!
    Im Prinzip kannst du komplett ohne WinAPI auskommen, was aber
    einige Dinge verkomplizieren würde.

    Fischi



  • Original erstellt von Fischi:
    **Das Erstellen eines Fensters kannst du dir sogar auch noch sparen, wenn du DInput benutzt!
    **

    Häh? Erklär mal wie du mit DI an ein Fenster-Handel für SetCooperativeLevel kommst ?



  • Original erstellt von TGGC:
    Häh? Erklär mal wie du mit DI an ein Fenster-Handel für SetCooperativeLevel kommst ?

    Hi

    Auszug aus der DirectX7 Dokumentation
    SetCooperativeLevel->Parameter hWnd
    Window handle used for the application. Set to the calling application's top-level window handle (not a handle for any child windows created by the top-level window). This parameter can be NULL when the DDSCL_NORMAL flag is specified in the dwFlags parameter

    Du kannst dann dein Prog. halt nur im Normalmodus laufen lassen
    und musst alle Tastatureingaben sowie Mausbewegungen über DirectInput
    abfangen.

    Fischi

    [ 06.08.2001: Beitrag editiert von: Fischi ]



  • Das finde ich aber nicht sehr sinnvoll...



  • Das finde ich aber nicht sehr sinnvoll...

    hat er ja auch gesagt...



  • Nein, er hat gesagt, das "verkompliziert die Dinge". DI ist ja nicht so kompliziert. Nur in den Vollbildmodus schalten, was 99% aller DX Anwendungen machen, wird dadurch nicht nur "verkompliziert" sondern unmöglich. Oder gibts eine andere (komplizierte) Möglichkeit um an das Handel zu kommen?
    Es geht ja hier auch nicht darum, ob man ein Fenster erstellen muss, sondern ob man WinApi können muss. Und um ein Fenster zu erstellen, brauch man keine WinApi können, den Code findet man in _jedem_ DX Tutorial. Wenn man das dann erstmal hat, hat man komplette Freiheit.

    Ich finds Schwachsinn, das immer wieder diese Diskussion kommt. Um DX zu Programmieren, muss man noch nie etwas von WinApi gehört haben, so einfach ist das.



  • Hallo

    Es stimmt schon, lpDD->SetCooperativeLevel(NULL,DDSCL_NORMAL) ist nicht
    besonders sinnvoll.
    Ich wollte ja auch nur zeigen, dass man nicht einmal ein Fenster erstellen
    können muss, um ein lauffähiges Spiel zu schreiben...
    Das mit dem Verkomplizieren von Dingen, war allerdings nicht auf das Fenstererstellen
    und DirectInput bezogen.
    Es gibt ne ganze Reihe API Funktionen, die einem das Leben wesentlich vereinfachen:
    z.B.
    -die Zeitfunktionen(GetTickCount,QueryPerformanceCounter...)
    mal zum Vergleich...das Äquivalent ohne WINAPI:

    void ReadTimeStampCounter(unsigned __int64 *i64Time)
    {
    _asm
        {
        _emit 0x0F
        _emit 0x31
        mov ecx,i64Time
        mov dword ptr[ecx],eax
        add ecx,4
        mov dword ptr[ecx],edx
        }
    }
    

    Ist aber um einiges langsamer als die WINAPI Fkt (die darf nämlich auch 0x0F33 benutzen),
    aber selbst wenn es minimal schneller wäre, würde ich dies nicht benutzen.
    *
    -die AVI Funktionen(AVIStreamGetFrame,AVIStreamOpenFromFile...)
    -einige Dateifunktionen(CopyFile,DeleteFile...)
    -DllFunktionen(LoadLibrary,GetProcAddress...)
    -mehr fällt mir im Moment nicht ein.

    Allerdings verstehe ich zwei Sachen nicht:
    1. Dieses Thema hatten wir doch nun schon öfters warum nimmt man es denn nicht
    in die FAQ Sektion auf?
    2. Warum scheut man sich die API zu benutzen...mit einer einigermaßen ordentlichen
    MSDN Version, sollte es eigentlich kein Problem darstellen, sich benötigten Funktionen
    rauszusuchen und anzuwenden.

    Fischi



  • > Dieses Thema hatten wir doch nun schon öfters warum nimmt man es denn nicht in die FAQ Sektion auf?

    Genau - warum eigentlich nicht - hiermit wird der Beitrag ins FAQ Archiv aufgenommen


Anmelden zum Antworten