Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: FAQ - Grafik-/Spieleprogrammierung ::  Brauche ich die WinApi ?     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
rofi
Unregistrierter




Beitrag rofi Unregistrierter 14:25:00 03.08.2001   Titel:   Brauche ich die WinApi ?            Zitieren

hi,
brauch ich die winapi um spiele zu programmieren?
und wenn wie gut muß ich sein?

bye


Edit by Headhunter : Überschrift geändert.

[ Dieser Beitrag wurde am 18.04.2003 um 18:28 Uhr von Headhunter editiert. ]
Werbeunterbrechung
xroads42
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.05.2001
Beiträge: 2411
Beitrag xroads42 Mitglied 14:56:00 03.08.2001   Titel:              Zitieren

Jein!

Kommt darauf an auf welchen System dein Game laufen soll, welche anforderungen du stellst und ob du D3D oder OpenGL verwendest.

Wenn du D3D verwenden willst kommst du um die WINAPI wohl nicht rum.

Wenn du OpenGL verwendest kannst du die GLUT( recht einfach, gibt es auf fast allen Platformen), die SDL ( etwas komplexer, aber umfangreicher, ebenfalls platformunabhängig) oder die WINAPI, bzw. die entsprechenden gegenstücke von Linux etc., benutzen.

Am schnellsten ist wohl die WinAPI, allerdings auch am "schwersten".

Gruß
XRoads42

_________________
"Wissen ist Nacht!" - Prof. Dr. Abdul Nachtigaller
TGGC
Mitglied

Benutzerprofil
Anmeldungsdatum: 01.02.2001
Beiträge: 1895
Beitrag TGGC Mitglied 15:40:00 03.08.2001   Titel:              Zitieren

Zwischen ein Fenster erzeugen und WINAPI beherrschen ist aber schon ein Unterschied...

_________________
Was wirklich zählt, ist klar.
http://www.fh-merseburg.de/~roesch | ICQ#: 109019884
Sir Martin
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.05.2001
Beiträge: 131
Beitrag Sir Martin Mitglied 16:21:00 03.08.2001   Titel:              Zitieren

Mit den MFC + DirectX funktioniert es auch.
xroads42
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.05.2001
Beiträge: 2411
Beitrag xroads42 Mitglied 18:04:00 03.08.2001   Titel:              Zitieren

Zitat:
Original erstellt von TGGC:
Zwischen ein Fenster erzeugen und WINAPI beherrschen ist aber schon ein Unterschied...


Naja, das hab ich so auch gar nicht gesagt.
Es wurde aber gefragt ob man die WinAPI braucht um spiele zu Programmieren. Klar, dazu braucht man auch Timer, Threads und Fkt´s zum Fenster erstellen. Das bietet die SDL aber auch...

Oder kennst du sonst noch teile der WinAPI die man braucht um spiele zu Programmieren?

Wie gesagt kommt ganz darauf an was man machen möchte...Und jemanden der die GESAMMTE WinAPI beherrscht...der soll sich mal melden.

_________________
"Wissen ist Nacht!" - Prof. Dr. Abdul Nachtigaller
Sir Martin
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.05.2001
Beiträge: 131
Beitrag Sir Martin Mitglied 18:48:00 03.08.2001   Titel:              Zitieren

Hmm das ist jetzt zwar ein wenig Off-Topic, aber macht ja nichts: Mich würde es mal interessieren, mit welchem Builder und Compiler die ganzen Spieleprogrammierer von Half-Life & co. arbeiten. Weiß da jemand was drüber?
TGGC
Mitglied

Benutzerprofil
Anmeldungsdatum: 01.02.2001
Beiträge: 1895
Beitrag TGGC Mitglied 19:12:00 03.08.2001   Titel:              Zitieren

Zitat:
Original erstellt von xroads42:
[QB]
Wenn du D3D verwenden willst kommst du um die WINAPI wohl nicht rum.

...Timer, Threads und Fkt´s zum Fenster erstellen...


Nur letzteres brauch man, und dieses Code kann aus einem beliebigen Tutorial kopiert werden. Also brauvh man nun die WINAPI um Spiele zu machen? Ich sage nein.

_________________
Was wirklich zählt, ist klar.
http://www.fh-merseburg.de/~roesch | ICQ#: 109019884
xroads42
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.05.2001
Beiträge: 2411
Beitrag xroads42 Mitglied 20:32:00 03.08.2001   Titel:              Zitieren

Zitat:
Original erstellt von TGGC:
Nur letzteres brauch man, und dieses Code kann aus einem beliebigen Tutorial kopiert werden. Also brauvh man nun die WINAPI um Spiele zu machen? Ich sage nein.


Richtig, man braucht die WINAPI nicht, weil es noch andere API´s gibt.
Es führen viel wege nach Rom...

Meiner meinung nach braucht man aber doch Timer und Threads.
Oder wie willst du sonst nen konstante FPS rate erzeugen und die bewegung deiner Objekte steueren?

_________________
"Wissen ist Nacht!" - Prof. Dr. Abdul Nachtigaller
Julian
Mitglied

Benutzerprofil
Anmeldungsdatum: 07.04.2000
Beiträge: 919
Beitrag Julian Mitglied 21:45:00 03.08.2001   Titel:              Zitieren

> 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!!! [img]images/smiles/icon_wink.gif[/img]

> Timer

Es gibt doch GetTickCount [img]images/smiles/icon_wink.gif[/img]
TGGC
Mitglied

Benutzerprofil
Anmeldungsdatum: 01.02.2001
Beiträge: 1895
Beitrag TGGC Mitglied 21:49:00 03.08.2001   Titel:              Zitieren

Zitat:
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.

_________________
Was wirklich zählt, ist klar.
http://www.fh-merseburg.de/~roesch | ICQ#: 109019884
LUk01
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.04.2001
Beiträge: 302
Beitrag LUk01 Mitglied 23:18:00 03.08.2001   Titel:              Zitieren

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 [img]images/smiles/icon_cool.gif[/img]

_________________
Headmember of 4te Dimension LUk01@gmx.at
noebef
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.06.2000
Beiträge: 671
Beitrag noebef Mitglied 19:15:00 04.08.2001   Titel:              Zitieren

lies dir die tutorials auf win-api.de durch.
das müsste reichen.
D@nm@n
Mitglied

Benutzerprofil
Anmeldungsdatum: 02.05.2001
Beiträge: 294
Beitrag D@nm@n Mitglied 20:33:00 04.08.2001   Titel:              Zitieren

Wo wir gerade dabei sind: Gibt es hier im Forum jemanden, der keinerlei Kenntnisse der WinAPI hat (außer natürlich Fenster erstellen [img]images/smiles/icon_biggrin.gif[/img] ), 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... [img]images/smiles/icon_rolleyes.gif[/img]

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

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




Beitrag BlueSeven Unregistrierter 22:44:00 04.08.2001   Titel:              Zitieren

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.
noebef
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.06.2000
Beiträge: 671
Beitrag noebef Mitglied 23:02:00 04.08.2001   Titel:              Zitieren

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

Benutzerprofil
Anmeldungsdatum: 09.04.2001
Beiträge: 2175
Beitrag sarfuan Mitglied 23:11:00 04.08.2001   Titel:              Zitieren

Ä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 [img]images/smiles/icon_wink.gif[/img]

_________________
compute: 1631, from Fr. computer, from L. computare "to count, sum up". Used for person, 1646; mechanical calculating machine, 1897; electronic machine, 1946/1941. Modern meaning (...) from 1945 (theoretical sense from 1937 as Turing machine).
TGGC
Mitglied

Benutzerprofil
Anmeldungsdatum: 01.02.2001
Beiträge: 1895
Beitrag TGGC Mitglied 08:11:00 05.08.2001   Titel:              Zitieren

Zitat:
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 [img]images/smiles/icon_biggrin.gif[/img] ), 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

_________________
Was wirklich zählt, ist klar.
http://www.fh-merseburg.de/~roesch | ICQ#: 109019884
Fischi
Mitglied

Benutzerprofil
Anmeldungsdatum: 02.06.2001
Beiträge: 181
Beitrag Fischi Mitglied 19:07:00 06.08.2001   Titel:              Zitieren

Zitat:
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 [img]images/smiles/icon_biggrin.gif[/img] )


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
TGGC
Mitglied

Benutzerprofil
Anmeldungsdatum: 01.02.2001
Beiträge: 1895
Beitrag TGGC Mitglied 19:31:00 06.08.2001   Titel:              Zitieren

Zitat:
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 ?

_________________
Was wirklich zählt, ist klar.
http://www.fh-merseburg.de/~roesch | ICQ#: 109019884
Fischi
Mitglied

Benutzerprofil
Anmeldungsdatum: 02.06.2001
Beiträge: 181
Beitrag Fischi Mitglied 21:32:00 06.08.2001   Titel:              Zitieren

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


Hi
Zitat:
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 ]
TGGC
Mitglied

Benutzerprofil
Anmeldungsdatum: 01.02.2001
Beiträge: 1895
Beitrag TGGC Mitglied 22:00:00 06.08.2001   Titel:              Zitieren

Das finde ich aber nicht sehr sinnvoll...

_________________
Was wirklich zählt, ist klar.
http://www.fh-merseburg.de/~roesch | ICQ#: 109019884
noebef
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.06.2000
Beiträge: 671
Beitrag noebef Mitglied 23:04:00 06.08.2001   Titel:              Zitieren

Zitat:
Das finde ich aber nicht sehr sinnvoll...

hat er ja auch gesagt...
TGGC
Mitglied

Benutzerprofil
Anmeldungsdatum: 01.02.2001
Beiträge: 1895
Beitrag TGGC Mitglied 09:33:00 07.08.2001   Titel:              Zitieren

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.

_________________
Was wirklich zählt, ist klar.
http://www.fh-merseburg.de/~roesch | ICQ#: 109019884
Fischi
Mitglied

Benutzerprofil
Anmeldungsdatum: 02.06.2001
Beiträge: 181
Beitrag Fischi Mitglied 16:19:00 07.08.2001   Titel:              Zitieren

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:
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
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
    }
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
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
}
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
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
Julian
Mitglied

Benutzerprofil
Anmeldungsdatum: 07.04.2000
Beiträge: 919
Beitrag Julian Mitglied 20:46:00 07.08.2001   Titel:              Zitieren

> 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
C/C++ Forum :: FAQ - Grafik-/Spieleprogrammierung ::  Brauche ich die WinApi ?   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.