Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

131

11.07.2010, 18:36

Sry für double-post, aber es steht eine weitere Designfrage an :)

Und zwar habe ich vor die Video- und die Windowklasse (Video = Direct3D-Wrapper, Window = WinAPI Fenster) neu zu schreiben, weil
sie mir nicht so ganz gefallen :P
Ich frage mich aber jetzt ob ich nicht die Windowklasse einfach in die Videoklasse integriere, da die Videoklasse ohne das Fenster ja logischer weise nichts kann, aber das Fenster hat jetzt nur die Aufgabe Events zu verwalten und eben ein Fenster zu sein.
Aber andererseits würde das gegen dieses SRP dingens verstoßen, da die eigentliche Direct3D-Klasse auch WinAPI Dinge verwaltet und Sprites, Fonts etc. rendert. Was würdet ihr da machen? :(

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

132

11.07.2010, 19:19

Was gefällt dir denn an der aktuellen Lösung nicht? Und wie sehen die Interfaces denn aus?
@D13_Dreinig

133

11.07.2010, 19:41

Naja mir gefällt es eben nicht, dass ich bis jetzt immer ein Window erstellt habe und dieses dann an die Video klasse übergeben.
Oder eben die Videoklasse sich ein eigenes Windowobjekt erstellt, wenn man keins übergibt.

Die Videoklasse hat eben ein Direct3DDevice und einen Zeiger auf ein Window wo man reinrendert. Ansonsten eben die üblichen Dinge(Clear, FlipBuffer etc.)
Die Windowklasse verwaltet ein WinAPI Fenster. Member sind unter anderem das Handle und die Eigenschaften(Fullscreen, Width, Height etc.)

134

11.07.2010, 19:48

Na, das fenster brauchst du ja nciht nur, für darin grafik zu rendern, sondern z.B. auch für das kooperationslevel bei soudn und input afair, von daher würde es imo schon sinn machen, das unabhängig von der videoklasse zu lassen.

135

26.07.2010, 19:04

1. Post ist bearbeitet ;)

136

26.07.2010, 19:09

Also das Example funktioniert bei mir Einwandfrei. Die Features hören sich auch gut an. Sag, hast du die Musik selber gemacht ?
Wobei tust du dich denn so schwer bei den Schriften ?

137

26.07.2010, 21:51

Ne die Musik hab ich aus dem Internet.
Also bei den Schriften tu ich mich eigl. bei allem schwer :(
Ich will die Texte rotieren lassen und skalieren können, aber ich weiß noch nicht mal wie
ich untransformierten Text rendern soll. bzw. ob ich TrueTypes oder Bitmaps benutzen soll.

138

26.07.2010, 22:15

Habs mir mal grob angeschaut, aber bis jetzt sieht es interssant aus ^^ Das Beispeilprogramm funktioniert auch bei mir einwandfrei
Mfg Male

idontknow

unregistriert

139

27.07.2010, 20:06

Beispiel funktioniert bei mir :). Nette kommentierung btw =)
Hab mal in den Code reingekuckt, was mir jetzt direkt aufgefallen ist:

Logfile.hpp: - Bei Write verwendest du noch "altes C", (afaik) also const char*, ...), würde da eher mit std::ofstream arbeiten und net mit sonem C/C++ misch masch. Kannst ja z.b. nen Operator für ne implizite Umwandlung in ofstream verwenden und dort dann jedesmal den zeitstempel vorne hin kleben ;). Wäre mein Ansatz und nur allgemein finds nicht gut, da dieses alte C Zeug mit reinzumachen wenn C++ bessere Alternativen bietet.

- GetTime()..... was hat sowas in Log zu suchen? Denke bedraf keienr Erklärung^^
- Ist vllt nur ne persöhnliche Ansicht, aber enums und Klassennamen ect. immer im SIngular und nicht sowas wie Logtypes^^ Ist aber nicht so wichtig.

TransformObject.hpp:
- float DegToRad(float degree); hat da imo auch nix zu suchen^^, gehört eher in einen Mathe Header oder sonst wo hin aber nicht in so eine Klasse!
- Was ist orientation? Rotation? Oo

TextureManager.hpp:
- Zum auslesen der Daten einer Textur kannst du auch einfach als vorvorletzten Parameter ein struct vom Typ D3DXIMAGE_INFO übergeben, das mit den Daten gefüllt wird, sollte schneller sein als deine Variante ;). Siehe auch: http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspx; http://msdn.microsoft.com/en-us/library/…v=VS.85%29.aspx

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »idontknow« (27.07.2010, 20:17)


140

28.07.2010, 00:20

Danke für die Antworten, schön das es bei euch läuft :)

@idontknow
Logfile.hpp: - Bei Write verwendest du noch "altes C", (afaik) also const char*, ...)

Das "const char*" ist leider nötig, damit die Argumentliste klappt, sonst hätte ich auf jeden Fall std::string genommen.

- GetTime()..... was hat sowas in Log zu suchen? Denke bedraf keienr Erklärung^^

Habs weggemacht, geht auch ohne ^^

- Ist vllt nur ne persöhnliche Ansicht, aber enums und Klassennamen ect. immer im SIngular und nicht sowas wie Logtypes^^ Ist aber nicht so wichtig.

Ist auch abgeändert ;)

- float DegToRad(float degree); hat da imo auch nix zu suchen^^, gehört eher in einen Mathe Header oder sonst wo hin aber nicht in so eine Klasse!

Habe es jetzt in ein namespace getan (Utils::...). Dort habe ich auch diverse Funktionen wie Random und Sleep, ist das okay?

- Was ist orientation? Rotation? Oo

Ja das sollte Rotation sein. War spät in der Nacht ^^

- Zum auslesen der Daten einer Textur kannst du auch einfach als vorvorletzten Parameter ein struct vom Typ D3DXIMAGE_INFO übergeben, das mit den Daten gefüllt wird, sollte schneller sein als deine Variante ;)

Das hab ich vorher schon versucht, aber dann erlaubt der keine "nicht 2er Potenzen" :(
Deswegen lasse ich es einfach so :P

Jo das wars dann an verbesserungen :D
Danke nochmal für deine Antwort ;)

Werbeanzeige