Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 08, 2025 08:33

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: [SDL] Device Context
BeitragVerfasst: Mo Jan 28, 2008 15:29 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Hallo,
ich habe eine Frage bzgl. des Device Context bei SDL Anwendungen.
Ich brache den Device Context für meine Fonts, nun ist es aber nicht so leicht bei SDL an den DC ranzukommen.
Nach längerem probieren hab ich es nun hinbekommen, jedoch weiß ich nicht genau, ob das auch alles richtig ist...
Zumindest funktioniert es.
Hier der Code:
Code:
  1. Program SDL_Test;
  2.  
  3. ...
  4.  
  5. Var
  6.   h_DC       : HDC;
  7.   hRC        : HGLRC;
  8.  
  9. ...
  10.  
  11. Begin
  12.   // SDL initialisieren:
  13.   // ...
  14.  
  15.   // Device Context holen: // Ist es so korrekt?
  16.   hRC  := HGLRC(surface.hwdata);
  17.   h_DC := GetDC(hRC);
  18.  
  19.   // MainLoop:
  20.   // ...
  21.  
  22.   // Device Context freigeben: // muss ich das wirklich machen,
  23.   ReleaseDC(hRC, h_DC);        // oder macht das SDL eh schon?
  24.  
  25.   // muss ich sonst noch was freigeben?
  26. End;

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 28, 2008 16:22 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
GetDC möchte eigentlich ein Handle eines Fensters und nicht den eines Render Kontextes. Deswegen vermute ich mal wird er dir den des Desktops gegeben haben.

In meiner TextSuite mache ich folgendes. Denn dabei habe ich keine Ahnung ob SDL, GDI, Konsole etc im Einsatz ist. Was aber auch unwichtig ist.
Code:
  1.   DC := CreateCompatibleDC(0);
  2.   try
  3.     SelectObject(DC, fFontHandle);
  4.  
  5.     // Blah
  6.   finally
  7.     DeleteDC(DC);
  8.   end;


Der Vorteil davon. CreateCompatibleDC erstellt einen Memory DC. Der existiert also nur im Speicher. Wärend GetDC dir einen DC eines Fensters gibt. Also wenn du darauf zeichnest wird eigentlich auf das Fenster gezeichnet.

Und die Null gibt an, dass es der aktuelle Bildschirm sein soll. Das geht auch bei GetDC. Also GetDC(0) gibt dir einen DC des aktuellen Bildschirmes zurück. Sprich der des Desktops.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 28, 2008 20:29 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Wofür genau brauchst du denn bei den Fonts den DC? Ich denke bei SDL ist es sinnvoller, ohne Plattformspezifische Dinge wie DCs oder so auszukommen (ich gehe mal davon aus, dass die unter Windows und Linux bei weitem nicht gleich behandelt werden).
Für Fonts in Zusammenarbeit mit SDL würde ich SDL_TTF nehmen.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 28, 2008 22:10 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich denke mal für Bitmap oder Polygonfonts. Aber Lord Horazont du könntest recht haben. So etwas wie DCs gibt es unter Linux nicht. Höchstens etwas ähnliches aber das entzieht sich meinem Wissen.

Und SDL_ttf würde ich persönlich nicht mehr unbedingt empfehlen. Wenn es nichts allzu ausgefallenes ist okay. Aber dann auch mit Hilfe einer drittlibrary (easySDLFonts oder TextSuite) oder wenn man selber einiges an Zeit investiert hat. Denn komplette Textbausteine zu generieren und das als Texturen zu benutzen ist nicht so die Wucht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 29, 2008 10:30 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Danke! CreateCompatibleDC ist genau das, was ich gesucht habe! Ein DC im Speicher 8)

Lord Horazont hat geschrieben:
Wofür genau brauchst du denn bei den Fonts den DC? Ich denke bei SDL ist es sinnvoller, ohne Plattformspezifische Dinge wie DCs oder so auszukommen (ich gehe mal davon aus, dass die unter Windows und Linux bei weitem nicht gleich behandelt werden).


Den DC brauche ich für wglUseFontBitmaps.
Ich habe mir schon gedacht, dass ich diese Art der Schrifterzeugung nicht für Linux benutzen kann. Dafür hab ich ja Bitmap-Fonts.
Das ganze brauch ich unter SDL nur, weil ich meine neue GUI mit SDL unter Windows teste. Da meine neue GUI beide Arten der Schrifterzeugung beherrschen soll, muss ich natürlich auch beide testen. Deshalb wollte ich nicht gleich noch eine Testumgebung bauen, die auf VCL basiert :wink:
Das ist auch schon der ganze Grund.
Außerdem entwickel ich unter Windows gerne mit SDL, auch ohne von der Plattform-Unabhängigkeit zu profitieren, einfach weil SDL toll ist. 8)

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]