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

21

19.06.2011, 22:54

Achso ja sorry hab ich vergessen zu schreiben. :P
Ich habe eine RenderWindow Klasse, die ein eigenes Objekt der Klasse GraphicsContext (nicht zu verwechseln mit GraphicsDevice) besitzt,
das widerrum eine SwapChain und einen Renderer besitzt.
Für Low-Level Zeichenoperationen (einzelne Vertizes) kann man sich den Renderer vom GraphicsContext holen und für High-Level,
wie z.B. Sprites, Texte oder Polygone übergibt man den Draw() Methoden dieser Objekte das GraphicsContext.

EDIT: Ressourcen werden von sich selbst erstellt, z.B. die Textur mit LoadFromFile() oder sowas. Das Device ist ja dann intern zugänglich.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ».:!Batzer!:.« (19.06.2011, 23:02)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

22

19.06.2011, 23:01

Wofür genau die Trennung zwischen Device und GraphicsContext? Warum kann das RenderWindow nicht einfach sein Device verwalten? Wer erzeugt das GraphicsDevice und wer erzeugt die Ressourcen?

23

19.06.2011, 23:05

Weil ich nicht jede Ressource für jedes Device extra laden will.
Da müsste ich ja eine Textur 3 Mal laden, wenn ich 3 Fenster habe, die alle die Textur darstellen sollen.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

24

19.06.2011, 23:13

Und wer erzeugt die RenderWindows, kann nicht der einfach das Device verwalten? Und wie werden Ressourcen erzeugt?

25

19.06.2011, 23:19

Und wer erzeugt die RenderWindows [...]


so ^^

C-/C++-Quelltext

1
RenderWindow window(640, 480, "Fenster");


Und wie werden Ressourcen erzeugt?


genau so einfach ^^

C-/C++-Quelltext

1
2
3
4
5
Texture texture;
texture.LoadFromFile("image.png");

Font font;
font.LoadFromFile("Arial.ttf");


Intern sollen die dann mit dem Device erzeugt werden.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

26

20.06.2011, 00:07

Naja gut, so ein Design ist wohl eher von vornherein auf ein globales Device-Objekt ausgelegt. Was du machen könntest wär dass du dem Ganzen z.B. noch eine Klasse Graphics/Renderer/whatever überordnest. Man könnte sich auch überlegen dass die einzelnen Objekte wie Font, Texture, etc. intern erstmal nur ihre Daten (z.B. die rohen Bilddaten) verwalten die unabhängig von einem Device sind. Erst wenn eine Font, eine Texture etc. dann in Verbindung mit einem Device verwendet werden soll wird intern ein entsprechendes Objekt wie z.B. eine D3D Texture erzeugt.

27

20.06.2011, 15:08

Ja stimmt das sind gute Ideen :)
Nur dumm, dass mein Design nicht so funktionieren kann ohne ein globales Device.
Was sind denn überhaupt die Nachteile eines solchen Ansatzes?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

28

20.06.2011, 15:24

Was sind denn überhaupt die Nachteile eines solchen Ansatzes?

Unflexibel, es ist unmöglich später Support für mehrere Devices einzubauen ohne dass sämtlicher Code der auf dem Framework aufbaut entsprechend angepasst werden muss. Je nachdem für was dein Framework so gedacht sein soll ist das eben mehr oder weniger schlimm oder egal...

29

20.06.2011, 15:45

Je nachdem für was dein Framework so gedacht sein soll ist das eben mehr oder weniger schlimm oder egal...

Das ist natürlich so eine Sache.
Der ursprüngliche Grund für das neu Schreiben meines Frameworks ist, dass das alte zu wenig Features besaß, denn so Dinge wie RenderTargets und Low-Level Rendering fehlt komplett. Angewendet soll das Framework dann erst mal für ein 2D Jump´n Run und für den dazugehörigen Editor. Wegem letzterem das Rendern in mehere Fenster.
Frag ich das mal anders: Was ist mit meheren Devices möglich, was nicht mit SwapChains und desgleichen erreichbar ist?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

30

20.06.2011, 15:50

Frag ich das mal anders: Was ist mit meheren Devices möglich, was nicht mit SwapChains und desgleichen erreichbar ist?

Rendern auf mehrere Monitore die an verschiedenen Grafikkarten hängen z.B. ;)

Werbeanzeige

Ähnliche Themen