ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
203
203
EMPFEHLEN
-
Hallo,
ich habe ein merkwürdiges Problem, welches ich leider nicht akzeptabel gelöst bekomme.
Ich zeichne mittels Directx9 und ID3DXFont:
rawText eine Text auf den Bildschirm. Dieser wird dann für 1-2 Sekunden angezeigt und verschwindet wieder. Nach weiteren 2-3 Sekunden wird er wieder angezeigt und das Spiel geht von vorne los.
Ich schaffe es den Text dauerhaft anzuzeigen, wenn ich meinen Render()-Aufruf von der Message-Loop in WM_PAINT packe und dort ein ValidateRect() ausführe. Allerdings geht dann die CPU Last auf 100%.
Hat jemand eine Idee, woran das liegen kann?
Mein Render() sieht so aus:
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
if( NULL == m_pDirect3D_Device ) return; // Clear the backbuffer to a blue color m_pDirect3D_Device->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), -1.0f, 0 ); // Begin the scene m_pDirect3D_Device->BeginScene(); // DO THE RENDERING D3DCOLOR fontColor = D3DCOLOR_ARGB(255,255,0,0); RECT rct; SetRect(&rct,0,0,m_windowWidth,m_windowHeight); m_textFont->DrawText(NULL, L"Hello World", -1, &rct, DT_LEFT | DT_NOCLIP, fontColor ); // /DO THE RENDERING // End the scene m_pDirect3D_Device->EndScene(); // Present the backbuffer contents to the display m_pDirect3D_Device->Present( NULL, NULL, NULL, NULL );
Danke und Gruß,
_Grubi
-
Die CPU-Last liegt am dauernden Neuzeichnen. Mit einem _sleep() könnte man das Problem lösen. Wenn du den gesamten Code (mit der main() ) postest, könnte ich dir vielleicht mehr sagen.
Gruss
cwriterIntel inside - Idiot outside :-)
Ich schreibe in C und bin Anfänger.
______________________________
Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
Danke
-
Vom ursprünglichen Code ist mittlerweile leider recht wenig noch übrig und stark angewachsen in der Menge.
Es war jedoch lediglich die WinMain() mit der Erstellung des Fensters und der MessageLoop und im WndProc() wurde WM_PAINT abgefangen. Ob ich den DirectX-Draw-Aufruf nun innerhalb der MessageLoop gemacht habe, nachdem alle Messages abgearbeitet waren, oder innerhalb von WM_PAINT, war dabei egal. ValidateRect() hatte jedoch nur in WM_PAINT funktioniert (mit der CPU-Erhöhung).
Ich verstehe an der ganzen Sache leider noch nicht, warum die Schrift am Blinken ist. Der Aufruf erfolgt definitiv einige Male in der Sekunde (per Ausgabe überprüft) und dennoch wird sie nicht durchgehend angezeigt :/
-
Ich hab das gerade nochmal eingebaut (im erweiterten Programm) und das Problem tauch plötzlich nicht mehr auf... Und wieder nichts bei gelernt :/
Dennoch danke, cwriter!
Ähnliche Themen
-
Text wird nicht angezeigt?!
Von GFX-Händchen im Forum CSSAntworten: 3Letzter Beitrag: 01.11.08, 11:45 -
Text von der Animation wird nicht angezeigt!
Von meste im Forum Flash PlattformAntworten: 3Letzter Beitrag: 10.11.06, 12:52 -
text wird nicht angezeigt
Von Joe025 im Forum Flash PlattformAntworten: 21Letzter Beitrag: 22.07.05, 01:34 -
Text-Spline wird nicht angezeigt!
Von Aeon511 im Forum Cinema 4DAntworten: 7Letzter Beitrag: 25.01.05, 17:02 -
Text wird nicht angezeigt
Von Aloa im Forum HTML & XHTMLAntworten: 3Letzter Beitrag: 13.01.05, 20:07





Zitieren
Login






