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

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

21

24.05.2010, 22:35

@Memoryleak:

Und was ist wenn D3DXCreateTextureFromFileEx fehlschlägt? Dann kehrst du aus der Funktion zurück ohne den Zeiger zu sichern!

@Singleton:

Beim Texturemanager mag der Einsatz möglicherweisse noch gerechtfertigt sein. Bei allen anderen Fällen ist es aber ziemlich daneben gegriffen!
@D13_Dreinig

22

24.05.2010, 22:44

Achso ja danke, hab den newTexture teil jetzt unter D3DX....

Aber warum sind die Singletons daneben gegriffen?
Grafik, Audio sollten am besten nur ein mal vorhanden sein;
Input auch;
Sound-, Texturmanager sowieso
und Draw hab ich nen Singleton gemacht, weil man dann kein neues Objekt erzeugen muss;
Timer brauch man auch nur einmal.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

23

25.05.2010, 08:21

Aber warum sind die Singletons daneben gegriffen?
Grafik, Audio sollten am besten nur ein mal vorhanden sein;
Input auch;
Sound-, Texturmanager sowieso
und Draw hab ich nen Singleton gemacht, weil man dann kein neues Objekt erzeugen muss;
Timer brauch man auch nur einmal.
Wieso sollten Grafik, Audio usw nur einmal existieren müssen? Und wieso sollte es einen globalen Zugriffspunkt darauf geben? Was wenn du fürs zeichnen mal ne andere API verwenden willst?
So wie ich das sehe benutzt du das Singleton aus der falschen Motivation raus. Normal solltest du tun was möglich ist um dieses Pattern nicht zu verwenden und nicht versuchen alles so hinzubiegen das du das Pattern verwenden darfst. Manche Leute reden übrigens sogar von groben Designfehlern bei Verwendung von Singletons.
@D13_Dreinig

24

25.05.2010, 09:18

Naja da hat David_pb Recht, Singletons machen nur Sinn bei z.B. Log Files. Sie sind nicht dafür gedacht dir alle Klassen zu globalisieren, damit du es einfacher hast.
Ist mir gar nicht aufgefallen mit den Singletons, aber hatte deinen Code auch nur überflogen. :P
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

25

25.05.2010, 11:08

Achso, da hab ich wohl damals das mit den Singletons nicht richtig verstanden :P
Wollte es dann so machen:

Grafik, Audio ganz normale Klassen, aber mit einer statischen Testvariable ob schon initialisiert wurde.
Beim Rest muss ich mal gucken.

Was würde bei euch denn ein Singleton sein?

Edit:

Warum sollte es Grafik und Audio 2 oder mehrmals geben dürfen?
Da würde es ja das Device usw. mehrmals geben.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ».:!Batzer!:.« (25.05.2010, 11:28)


Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

26

25.05.2010, 11:26

Nichts.Singletons sind meiner Meinung nach veraltet , da gibts bessere Möglichkeiten.

€: Ich glaube per SuFu müsste man solche Threads finden , in denen Singletons diskutiert werden.

27

25.05.2010, 11:37

Wollte es dann so machen:

Grafik, Audio ganz normale Klassen, aber mit einer statischen Testvariable ob schon initialisiert wurde.
Beim Rest muss ich mal gucken.

Das ist doch das Gleiche wie bei Singletons!?

Was würde bei euch denn ein Singleton sein?

Siehe mein Post, das wäre so ziemlich das einzige Beispiel, was mir grad so einfällt.

Warum sollte es Grafik und Audio 2 oder mehrmals geben dürfen?
Da würde es ja das Device usw. mehrmals geben.

Weil du zufällig mehrere Grafiken und Audiodateien haben möchtest? Wieso würde es das Device dann mehrmals geben? Dann hast du irgendwas falsch gemacht. Du solltest dir vielleicht nicht nur einen Texture Manager schreiben, sondern einen allgemeinen RessourceManager, ist deutlich praktischer als viele einzelne Manager.
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

28

25.05.2010, 11:40

Was hab ich denn falsch gemacht, wenn ich den Grafikteil initialisiere erstellt die Klasse ein neues Device, ist doch logisch oder wie soll das sonst passieren. Was meinst du mit RessourcenManager?
Also ist static auch böse oder was? ^^

29

25.05.2010, 12:00

Naja es gibt ja Unterschiede. Du musst zum Beispiel den Grafikteil evtl. nur einmal initialisieren, aber dieser darf ja auch mehrere Objekte haben (Sprites, Texturen, usw). Diese Objekte in Verbindung mit Singletons zu verwenden ist sowieso absolut sinnfrei. Singletons wären eher geeignet, wenn du eine Klasse wirklich überall brauchst und dies auf jeden Fall mit nur einer Instanz. Brauchst du die Grafikklasse z.B. in der Sound Klasse? Ich denke nicht. Und was ist wenn jemand z.B. doch 2 Devices haben möchte? Das kommt durchaus vor. Dann wird er durch diese blöden Singletons eingeschränkt.

Mit Ressource Manager meine ich einen Manager, wie der Texture Manager, nur, dass dieser alle Ressourcen managed. (Sounds, Sprites, usw.)

static ist an sich nicht böse, es kommt halt nur auf die Verwendung an und in diesem Fall, würdest du doch das Gleiche wie mit Singletons machen. Du erzeugst eine Instanz, wenn keine vorhanden ist und wenn schon eine vorhanden ist, wird keine mehr erzeugt.
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

30

25.05.2010, 12:13

Aber mit Grafik meinte ich eigl. nur die Klasse "Graphics", die "nur" Direct3D initialisiert und die Scenen beginnt und endet.
Die Spriteklasse ist ja kein Singleton.
Und Audio ist ja auch nicht die Soundklasse.

Werde mir mal 1 Manger schreiben, der Sounds, Texture usw. verwaltet.
Der Manger darf aber ein Singleton sein oder ^^
der wird ja "fast" überall benutzt.

Werbeanzeige