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

09.03.2014, 18:22

Frage zu Win32's "GetDC(NULL)"

Hi,
Wenn man mit OpenGL unter Windows seinen eigenen Texture Font erzeugen will, macht man das ja meistens mit den WinAPI Funktionen "CreateFont" etc.
Bei "SelectObject" muss ein Device Context Handle (HDC) übergeben werden. Das bekommt man u.A. mit "GetDC" und da kann man auch "GetDC(NULL)" verwenden.
Dann erhält man den Kontext des gesamten Bildschirms.

Wenn ich gerade kein Fenster parat habe - z.B. weil keins erstellt wurde - verwende ich also einfach "GetDC(NULL)".

Was spricht denn dagegen, einfach immer "GetDC(NULL)" zu verwenden?

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

2

09.03.2014, 19:50

Wenn du wirklich mal was zeichnen willst solltest du schon in deinem Fenster bleiben ...
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

3

09.03.2014, 23:18

In diesem Fall geht es mir nur um das Erstellen des Fonts und nicht um das Zeichnen auf dem Bildschirm.
Den Font zeichne ich mit Windows GDI in eine Bitmap, lese die Daten aus und lade es in eine GL oder D3D Texture.
Dafür brauche ich erst mal gar kein Fenster.

Ich wollte nur wissen ob z.B. Performance technisch (oder aus anderen Gründen) das ständige Benutzen von "GetDC(NULL)" unvernünftig wäre.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

10.03.2014, 00:33

Wofür brauchst du dann überhaupt einen DC?

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

5

10.03.2014, 12:37

Um den erstellten Font mit "SelectObject" auszuwählen, bevor ich ihn in eine Bitmap zeichne.

C-/C++-Quelltext

1
2
3
4
5
6
HDC deviceContext = GetDC(NULL);
HGDIOBJ prevFont = SelectObject(deviceContext, fontHandle);

/* ... */

SelectObject(deviceContext, prevFont);

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

10.03.2014, 12:50

Oh, du willst den Text also mit GDI malen? In dem Fall ist CreateCompatibleDC() wohl, was du suchst... ;)

Werbeanzeige