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:
Program SDL_Test;
...
Var
h_DC : HDC;
hRC : HGLRC;
...
Begin
// SDL initialisieren:
// ...
// Device Context holen: // Ist es so korrekt?
hRC := HGLRC(surface.hwdata);
h_DC := GetDC(hRC);
// MainLoop:
// ...
// Device Context freigeben: // muss ich das wirklich machen,
ReleaseDC(hRC, h_DC);// oder macht das SDL eh schon?
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:
DC := CreateCompatibleDC(0);
try
SelectObject(DC, fFontHandle);
// Blah
finally
DeleteDC(DC);
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.
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 network • my 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
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.
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
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 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.
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.