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

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

1

06.09.2010, 13:26

DirectX11: Zeichnen von 2D Objekten und Text

Hi,
ich hab gestern versucht Direct2D und DirectDraw in meinen D3D11 renderer einzubauen, um 2 dimensional zeichnen zu können.
Allerdings scheint es nur für Fenster-Applikationen geeignet zu sein. Also Zeichnen mit D2D wird wohl nur über die WindowsCallback Funktion und WM_PAINT usw. gemacht.
Ich hab versucht, das auf den D3D11 Grafik Kontext zu zeichnen. Es war grotten langsam und flimmerte irgendwie.
Ich kann natürlich 2D Objekte einfach über einen vereinfachten Shader rendern. Bei D3D9 und OGL läuft meine 2D Grafik ja auch über die Hardware beschleunigun.
Aber wie um alles in der Welt soll ich dann Text zeichnen??

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

06.09.2010, 13:40

Für Text gibts DirectWrite. Das integriert sich sogar sehr einfach in D2D.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

3

06.09.2010, 14:06

Ist das aber wirklich für realtime-rendering gedacht??
Als ich das ausprobiert habe, war's furchtbar langsam. Und sooo viel kann man da eigentlich nicht falsch machen. Hab mir ein kleine Tutorial angeguckt und so wie ich die sache sehe, gehört das Zeichnen von Text mit DirectWrite in die Window Callback unter WM_PAINT. Das zeichnet aber immer nur dann neu, wenn z.B. die Fenstergröße geändert wird.

4

06.09.2010, 14:11

Direct2D.
Und ja, es ist hardwarebeschleunigt. Wenn du DirectWrite ist Verbindung mit Direct2D verwendest ist das auch hardwarebeschleunigt ...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

06.09.2010, 14:18

Ich hab noch nicht soviel mit D2D gemacht aber soweit ich informiert bin sollte D2D relativ unproblematisch mit D3D zusammenarbeiten. Dein Problem ist wohl vermutlich dass du versuchst in ein HwndRenderTarget zu rendern, was natürlich Blödisnn ist wenn du schon mit D3D in dein Fenster zeichnest. Es gibt aber noch andere Arten von Rendertargets in D2D...

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

6

06.09.2010, 14:20

Ah ok danke, das erklärt wohl mein Problem. Ich dachte man muss für D2D noch ein zusätzliches HwndRenderTarget erstellen.
Dann guck ich mir das heute noch mal an.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

06.09.2010, 14:25

Ich dachte man muss für D2D noch ein zusätzliches HwndRenderTarget erstellen.

Nur weil ein paar einfache Beispiele es so machen bedeutet das noch lange nicht dass das so gemacht werden muss ;)
Die Sache mit WM_PAINT schaut da nicht anders aus. Wenn du D2D in Anwendungen zum Malen von Diagrammen oder sonstwas verwendest dann ist das natürlich sinnvoll so. Das ist aber rein eine Folge des Kontext in dem D2D verwendet wird und keine Beschränkung von D2D an sich.

Werbeanzeige