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

1

18.11.2003, 16:33

Engine soll DX nutzen, Spiel (Project) jedoch nicht

Hi Leutz :)

ICh wollte mal abfragen ob es gescheit ist alle Funktionen die man braucht in seiner Engine zu kapseln und in dem Projekt dann nur noch die DX Header miteinbinden jedoch keine Libs. Sonst würde ich kein Vorteil in einer Engine als DLL Form sehen.

2. Frage, ich hab momentan ne Klasse für den VertexBuffer und nen ersatzt für D3DXVECTOR3 (bisschen von TriBase abgeschaut ;)).
Dieser heisst dhVector3, davon gibts dann noch abgeleitet dhNormalVector3, dhDiffuseVector3 und dhRHWVector3. Ist das schlau so ? Ich meine frisst das Speed ?

Ausserdem hab ich die DX Main Klasse (dhGraphics, dh = D3DHAWK ... bin ich mal irgendwann drauf gekommen *g*) statisch gemacht, das würde ich gerne bei allen Managern (Textur,Particle) und Klassen machen die man nur einmal braucht.
Hat das Nachteile ? Ist das falsch ?

Jaja sind viele Fragen und viel Text aber ich will ne halbswegs gute und lauffähige Engine, damit ich nich mittem im Spiel wieder was an der Engine ändern muss. Denn solangsam will ich mal mit dem Spiel anfangen :)

Thx für das Lesen
(Und Patrick, komm mir nich mit Portieren oder so :P)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

18.11.2003, 16:57

Statische Klassen macht man lieber als Singletons (habe ich für die 2. Auflage auch geändert). Eine Frage: Was soll dhDiffuseVector3 sein?

3

18.11.2003, 17:11

hmm... okay... soll mir recht sein, danke für den Hinweis.

dhDiffuseVector3 : public dhVector3
{
DWORD dwColor;
}

Is halt für farbige Vertexe. Is der Rest meiner Ideen und vorstellungen (statische Klasse wird geändert) so ok ? Ich mein auch vom Speed her ?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

18.11.2003, 17:21

Ich glaube Du meinst dann aber "DiffuseVertex" und nicht "DiffuseVector", oder?
Mit dem Speed hat das Ganze wahrscheinlich garnix zu tun.

5

18.11.2003, 17:44

David es ist doch wurst ob man es nun Vector oder Vertex nennt, OK, Vector sind nur 3 Punkte stimmt.

Ich kann die ja auch in dhVertex umbennen, das ist nich das problem :)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

18.11.2003, 18:03

Zitat von »"ghostie"«

Vector sind nur 3 Punkte stimmt.

Falsch ;D

7

18.11.2003, 18:09

Aehm und Warum falsch ?

Soweit ich weiss ist ein Vector ein Punkt im dreidimensionalen Raum (3D) bestehend aus X,Y und Z.


Nochmal zur Engine:
Was ist besser vom Design ( / Speed):
Wenn ich das Device bzw. die Benötigte Schnittstelle übergebe oder Singleton.

8

18.11.2003, 19:03

@Vertex
Ein Vertex besitzt n Koordinaten nicht Punkte. Bei dir also drei Koordinaten. Drei Punkte waehre ein Dreieck bestehend aus drei Vektoren.

Zitat

Nochmal zur Engine:
Was ist besser vom Design ( / Speed):
Wenn ich das Device bzw. die Benötigte Schnittstelle übergebe oder Singleton.

Von Speed her duerfte der Unterschied vernachlaessig bar bleiben. Wenn es denn einen gibt. Wenn du von Device sprichtst nehme ich an das du deine Klasse meinst die das D3D Device Kapselt. Beides ist in Ordnung. Aber ich wuerde vieleicht zum Singleton Design tendieren. Es ist schoen einfach zu handhaben und man benoetigt nicht immer eine Referenz in jeder Klasse die dein Device benutzt.

Zitat

ICh wollte mal abfragen ob es gescheit ist alle Funktionen die man braucht in seiner Engine zu kapseln und in dem Projekt dann nur noch die DX Header miteinbinden jedoch keine Libs. Sonst würde ich kein Vorteil in einer Engine als DLL Form sehen.
Wenn du deine Engine in eine DLL verpackst solltest du es so hand haben das man sowohl die Libs also auch die Header von DX nicht benoetigt.

Zitat

2. Frage, ich hab momentan ne Klasse für den VertexBuffer und nen ersatzt für D3DXVECTOR3 (bisschen von TriBase abgeschaut ).
Dieser heisst dhVector3, davon gibts dann noch abgeleitet dhNormalVector3, dhDiffuseVector3 und dhRHWVector3. Ist das schlau so ? Ich meine frisst das Speed ?
Vom Speed her ist es egal. Allerdings scheint es so das du Vertex mit Vector vertauscht ;) Davon ab ist es sehr unklug Vertexformate vorzuschreiben. Es schraenkt deine Moeglichkeiten ein. Also Vertexformat frei waehlbar lassen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

9

18.11.2003, 20:14

@Vector:

Lol ich mein mit 3 Punkten ja die Coordinaten bzw Achsen... bin die ganze Woche bisschen verpeilt, hab seit Sontag gerade mal 10 Stunden schlaf *g*

@Singleton:

Schön :)

Ich hab schon gehört das man die Singleton nicht durch einen Destructor freigeben soll sonder das von Windows machen lassen, stimmt das ?

Zitat

Vom Speed her ist es egal. Allerdings scheint es so das du Vertex mit Vector vertauscht Davon ab ist es sehr unklug Vertexformate vorzuschreiben. Es schraenkt deine Moeglichkeiten ein. Also Vertexformat frei waehlbar lassen.


Ja stimmt, das ist mir klar, aber 1. wie kann ich den User ein eigenes Format definieren lassen ? 2. Wie übergebe ich das und krieg die Infos daraus ? ( FVF_XYZ, FVF_DIFFUSE, FVF_TEX1 .... usw)

Oder sollte ich vielleicht nur eine dhVector3 machen, da meine Berechnung reinhauen und der User kann sich dann selbst ableiten was er braucht ?

ODer hast du da ne andere Idee ? Ich will nur ungerne bzw. gar nicht void Pointer nehmen da man damit zuviel mist bauen kann.
Besonders da einer aus meinem Team D3D lernen will und er dann wahrscheinlich damit nur Bluescreens erzeugen würde ;)

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

10

18.11.2003, 20:53

Zitat von »"ghostie"«



Ich hab schon gehört das man die Singleton nicht durch einen Destructor freigeben soll sonder das von Windows machen lassen, stimmt das ?


Wenn ich das richtig gepeilt hab, dann sollte man, wenn man für die Singleton-Instanz nen Pointer benutzt, den Destruktor auf jeden Fall privat definieren, damit man nicht deleten kann. Allerdings kanns dann z.b. Ressource-Leaks geben, wenn die Klasse resourcen benutzt. Wenn man das als direktes Objekt, und nicht als Pointer definiert, wirds am ende des programms wieder gelöscht. dan sollte eigentlich der destruktor von selbst aufgerufen werden, oder? ???

Werbeanzeige