JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=3208ccac0ebff166407ab00dad85bb0bMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Text auf Texture zeichnen
Gehe zu Seite 1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 23.04.2006, 19:34    Titel: Text auf Texture zeichnen Antworten mit Zitat

CPP:
   LPDIRECT3DSURFACE9 Surface;
   m_lpTexture->GetSurfaceLevel(0, &Surface);
   HDC hDC;
   Surface->GetDC(&hDC);
   TextOut(hDC, 0, 0, "haha", 4);
   //TextOut(hDC, 10, 10, Text.c_str(), Text.size());
   Surface->ReleaseDC(hDC);
   Surface->Release();

Also, ich hab die Texture erstellt, und mal gelockt und in einer Schleife einfarbig bunt gefärbt. Das Funktionierte soweit. Leider zeigt obiger Code keine Wirkung, es wird auf der Textur kein Text dargestellt.
Irgendjemand ne Idee woran es liegt? Groß genug ist die Textur, 100x100 Pixel.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 23.04.2006, 19:37    Titel: Antworten mit Zitat

Muss man da nicht Lock verwenden und/oder UpdateDirtyRegion, AFAIK gabs da einiges zu beachten.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 23.04.2006, 19:45    Titel: Antworten mit Zitat

UpdateDirtyRegion geht irgendwie weder bei Texture noch biem Surface.

Ich hab mal die Texture gelockt gelassen, wärend ich mir das Surface geholt habe, hat auch nix gebracht...
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 23.04.2006, 21:52    Titel: Antworten mit Zitat

CreateCompatibleDC() könnte helfen. Ich bin mir jetzt zwar nicht ganz sicher, aber ich meine, das mal im Zusammenhang mit Bitmaps,Surfaces&Co gesehen bzw. eingesetzt zu haben.

In der MSDN-Beschreibung steht jedenfalls etwas Zutreffendes:
Die MSDN hat Folgendes geschrieben:
The CreateCompatibleDC function creates a memory device context (DC) compatible with the specified device.

_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 24.04.2006, 12:39    Titel: Antworten mit Zitat

CPP:
LPDIRECT3DSURFACE9 Surface;
m_lpTexture->GetSurfaceLevel(0, &Surface);
HDC hDC;
Surface->GetDC(&hDC);
CreateCompatibleDC(hDC);
TextOut(hDC, 0, 0, "haha", 4);
//TextOut(hDC, 10, 10, Text.c_str(), Text.size());
DeleteDC(hDC);
Surface->ReleaseDC(hDC);
Surface->Release();

Geht auch net Sad
gleiches Ergebnis, sütrtzt zwar net ab aber zeigt auch nix an.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
51m0n
JLI'ler


Alter: 33
Anmeldedatum: 06.01.2006
Beiträge: 167
Wohnort: Erkelenz
Medaillen: Keine

BeitragVerfasst am: 24.04.2006, 13:29    Titel: Antworten mit Zitat

CreateCompatibleDC() wird als parameter der DC übergeben, zu dem ein kompitables erzeugt werden soll. Der Rückgabewert ist dan das neu kreierte DC.
Bsp:
CPP:
hdc = BeginPaint(hwnd, &paint);
hdc2 = CreateCompatibleDC(hdc);
//irgendetwas damit machen
ReleaseDC(hdc);
ReleaseDC(hdc2);


Das was du gemacht hast ist quatsch und bringt nichts. Wink
Nur um die Missverständnisse aufzuklären.

edit:
@ TLOP ich denke das war bei DirectDraw da ist mir das auch schonmal öfters begegnet aber bei Direct3D?

@Jonathan Probiers doch vieleicht mit DrawTextEx anstatt mit TextOut wüsste zwar net warum das funktionieren sollte aber man kanns ja mal probiern^^
_________________
Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 24.04.2006, 15:36    Titel: Antworten mit Zitat

jo, stimmt, mein Fehler.
CPP:
   LPDIRECT3DSURFACE9 Surface;
   m_lpTexture->GetSurfaceLevel(0, &Surface);
   HDC hDC, hDC2;
   Surface->GetDC(&hDC);
   hDC2=CreateCompatibleDC(hDC);
   TextOut(hDC, 0, 0, "haha", 4);
   //TextOut(hDC, 10, 10, Text.c_str(), Text.size());
   DeleteDC(hDC2);
   Surface->ReleaseDC(hDC);
   Surface->Release();

geht aber auch net...
Achja, und müsste es bei deinem Beispiel nciht auch ein EndPaint geben, welches das DC automatisch freigibt?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
51m0n
JLI'ler


Alter: 33
Anmeldedatum: 06.01.2006
Beiträge: 167
Wohnort: Erkelenz
Medaillen: Keine

BeitragVerfasst am: 24.04.2006, 15:49    Titel: Antworten mit Zitat

Jonathan_Klein hat Folgendes geschrieben:
Achja, und müsste es bei deinem Beispiel nciht auch ein EndPaint geben, welches das DC automatisch freigibt?


Huch Embarassed bin ein bischen durcheinander wo jetzt die Schule wieder angefangen hat.

Aber ich denke für deinen Zweck brauchst du die Methode auch gar nicht.

Was mir auffällt nachdem du den Text auf das Surface gezeichnet hast löschst du es direct wieder is das nur in diesem Beispiel so oder auch in deinem Code? Überprüfe doch mal ob Surface->GetDC() erfolreich ist. Oder muss man das Surface für so etwas auch locken?
So langsam gehn mir die Ideen aus..
_________________
Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 24.04.2006, 16:45    Titel: Antworten mit Zitat

Äh...hast du das jetzt nur hier im Forum falsch geschrieben?
CPP:
    LPDIRECT3DSURFACE9 Surface;
   m_lpTexture->GetSurfaceLevel(0, &Surface);
   HDC hDC, hDC2;
   Surface->GetDC(&hDC);
   hDC2=CreateCompatibleDC(hDC);

   //hDC2 wär hier wohl empfehlsam
   TextOut(hDC, 0, 0, "haha", 4);
   //TextOut(hDC, 10, 10, Text.c_str(), Text.size());
   DeleteDC(hDC2);
   Surface->ReleaseDC(hDC);
   Surface->Release();


@51m0n: Hmm...kann sein...TCoN braucht die Zeit, die ich sonst für D3D eingesetzt hätte, vllt. wüsst ichs dann sicherer Razz
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
51m0n
JLI'ler


Alter: 33
Anmeldedatum: 06.01.2006
Beiträge: 167
Wohnort: Erkelenz
Medaillen: Keine

BeitragVerfasst am: 24.04.2006, 16:51    Titel: Antworten mit Zitat

Wenn er hDC2 nehmen würde hätte er ja nicht den DC von dem Surface sondern nur einen kompitablen DC. Aber meiner Meinung nach braucht man in diesem Fall gar kein CreateCompitableCD().
Wie gesagt neiner Meinung nach Wink
_________________
Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 24.04.2006, 17:09    Titel: Antworten mit Zitat

So wies jetzt dasteht würde es wenig Sinn ergeben, weil er den kompatiblen DC nur erstellt und hinterher wieder löscht. Dazwischen stellt er aber nichts damit an.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
51m0n
JLI'ler


Alter: 33
Anmeldedatum: 06.01.2006
Beiträge: 167
Wohnort: Erkelenz
Medaillen: Keine

BeitragVerfasst am: 24.04.2006, 17:33    Titel: Antworten mit Zitat

Er braucht gar kein zweites DC wenn er nur Text ausgeben will. Welches Grafikformat hat dein Surface? A8R8G8B8 solltest du nicht nehmen denn GetDC unterstützt glaub ich kein Alpha. Und das Surface darf meines wissens nich im Default Pool liegen.
Ich glaub jetzt bin ich am Ende mit meinen kräften^^
hoffe das hilft
_________________
Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dragon
Super JLI'ler


Alter: 38
Anmeldedatum: 24.05.2004
Beiträge: 340
Wohnort: Sachsen
Medaillen: Keine

BeitragVerfasst am: 24.04.2006, 17:43    Titel: Antworten mit Zitat

Ich kenn mich mit DX-Texturen nicht aus. Vieleicht sollte man erstmal mit CreateFont eine Schriftart für die Texture erstellen. Rolling Eyes Ist nur eine Vermutung. Wink
_________________
Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 24.04.2006, 21:17    Titel: Antworten mit Zitat

achja, dreck ARGB ^^
tja, ich will den Hintergrund aber transparent haben, da brauch ich schon ARGB. Aber stimmt da gabs ja sowas das das nicht ging...

Vielleicht sollte ich den Text in einen extra speicherbereich schreiben und den dann in die Textur kopieren, das müsste doch gehen, oder?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
51m0n
JLI'ler


Alter: 33
Anmeldedatum: 06.01.2006
Beiträge: 167
Wohnort: Erkelenz
Medaillen: Keine

BeitragVerfasst am: 25.04.2006, 10:33    Titel: Antworten mit Zitat

Oder du füllst den Hintergrund mit einer Farbe zeichnest dann den Text und benutzt beim zeichnen den Colorkey. Und falls du unbedingt ARGB brauchst dann dann erstellst du erst ein Surface mit RGB Text drauf schreiben und dann das Surface auf ein anderes Surface(das kann dan ARGB sein).

Zitat:
Vielleicht sollte ich den Text in einen extra speicherbereich schreiben und den dann in die Textur kopieren, das müsste doch gehen, oder?

Das versteh ich irgendwie nicht. Was genau meinst du?

bzw. Surface != Textur

MfG 51m0n
_________________
Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2, 3  Weiter
Seite 1 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum