|
JLI Spieleprogrammierung
|
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
|
Verfasst am: 23.04.2006, 19:34 Titel: Text auf Texture zeichnen |
|
|
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 |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 23.04.2006, 19:37 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 23.04.2006, 19:45 Titel: |
|
|
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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 23.04.2006, 21:52 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 24.04.2006, 12:39 Titel: |
|
|
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
gleiches Ergebnis, sütrtzt zwar net ab aber zeigt auch nix an. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
51m0n JLI'ler
Alter: 33 Anmeldedatum: 06.01.2006 Beiträge: 167 Wohnort: Erkelenz Medaillen: Keine
|
Verfasst am: 24.04.2006, 13:29 Titel: |
|
|
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.
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 24.04.2006, 15:36 Titel: |
|
|
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 |
|
|
51m0n JLI'ler
Alter: 33 Anmeldedatum: 06.01.2006 Beiträge: 167 Wohnort: Erkelenz Medaillen: Keine
|
Verfasst am: 24.04.2006, 15:49 Titel: |
|
|
Jonathan_Klein hat Folgendes geschrieben: | Achja, und müsste es bei deinem Beispiel nciht auch ein EndPaint geben, welches das DC automatisch freigibt? |
Huch 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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 24.04.2006, 16:45 Titel: |
|
|
Ä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 _________________ 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 |
|
|
51m0n JLI'ler
Alter: 33 Anmeldedatum: 06.01.2006 Beiträge: 167 Wohnort: Erkelenz Medaillen: Keine
|
Verfasst am: 24.04.2006, 16:51 Titel: |
|
|
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 _________________ Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 24.04.2006, 17:09 Titel: |
|
|
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 |
|
|
51m0n JLI'ler
Alter: 33 Anmeldedatum: 06.01.2006 Beiträge: 167 Wohnort: Erkelenz Medaillen: Keine
|
Verfasst am: 24.04.2006, 17:33 Titel: |
|
|
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 |
|
|
Dragon Super JLI'ler
Alter: 38 Anmeldedatum: 24.05.2004 Beiträge: 340 Wohnort: Sachsen Medaillen: Keine
|
Verfasst am: 24.04.2006, 17:43 Titel: |
|
|
Ich kenn mich mit DX-Texturen nicht aus. Vieleicht sollte man erstmal mit CreateFont eine Schriftart für die Texture erstellen. Ist nur eine Vermutung. _________________ Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 24.04.2006, 21:17 Titel: |
|
|
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 |
|
|
51m0n JLI'ler
Alter: 33 Anmeldedatum: 06.01.2006 Beiträge: 167 Wohnort: Erkelenz Medaillen: Keine
|
Verfasst am: 25.04.2006, 10:33 Titel: |
|
|
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 |
|
|
|
|
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
|