Seite 1 von 1
[DX10] DrawText Problem / Phenomen
Verfasst: 18.04.2009, 01:16
von kkrahl
Wider mal eines meinen seltsamen Probleme :?
Habe folgende Situation:
(1) Main-Thread
(2) Input-Thread
(3) Render-Thread
(4) Script-Engine-Thread
Wenn ich
von Main-Thread(1), Input-Tread(2) oder Rende-rThread(3) aufrufe funktioniert alles wunderbar und ich habe auch das richtige Ergebnis in meinem RenderTarget. Rufe ich aber die selbe Mehtode vom Script-Engine-Thread(4) auf so bleibt mein RenderTarget leer - alle anderen RenderFunktionen funktionieren.
Ändere ich nun die Methode auf
dann funktioniert es von allen Threads aus, auch vom Script-Engine-Thread(4) - das gewünschte Ergebnis ist auch im RenderTarget.
Hat jemand von euch dafür eine Erklärung, denn ich würde ich Funktion gerne mit Sprite verwenden da das ja performanter sein soll.
Dank Euch
Karl
Re: [DX10] DrawText Problem / Phenomen
Verfasst: 18.04.2009, 11:21
von Gelöschter Benutzer
Hast du
ID3DX10Sprite::Begin(D3DX10_SPRITE_SORT_TEXTURE|D3DX10_SPRITE_SAVE_STATE),
gerendert und
dann ID3DX10Sprite::End() aufgerufen
? Ansonsten kann ich mir bei diesem Fall eine andere Fehlerquelle nicht vorstellen.
Hier ne passende Lua-Implementierung. Wie es dort mit den Arrays war weiß ich leider nicht mehr so genau.
Code: Alles auswählen
-- Beispiel an Lua zur Implementation
-- Zeichnet einen String.
-- Möchte man mehrere Strings zeichnen, so sollte man
-- selbst die Begin- und EndWrite() Funktion aufrufen.
-- Hier komplett:
function WriteOneString(text, positionx, positiony, colorr, colorb, colorg, colora, style)
BeginWrite()
SetWritePosition(positionx, positiony)
SetWriteColor(colorr, colorg, colorb, colora)
SetWriteStyle(style)
WriteText(text)
EndWrite()
end
-- Ohne color
function WriteOneString(text, positionx, style)
BeginWrite()
SetWritePosition(positionx, positiony)
SetWriteStyle(style)
WriteText(text)
EndWrite()
end
-- Ohne style
function WriteOneString(text, positionx, positiony, colorr, colorb, colorg, colora)
BeginWrite()
SetWritePosition(positionx, positiony)
SetWriteColor(colorr, colorg, colorb, colora)
WriteText(text)
EndWrite()
end
-- Ohne color und style
function WriteOneString(text, positionx, positiony)
BeginWrite()
SetWritePosition(positionx, positiony)
WriteText(text)
EndWrite()
end
Hoffe, dass das hilft.
Re: [DX10] DrawText Problem / Phenomen
Verfasst: 18.04.2009, 14:24
von kkrahl
Ja, ich arbeite mit begin() und end() bei den Sprites. Ich denke nicht das das etwas ist das durch Lua selbst hervorgerufen wird, benutzt ja die selbe Funktion ja auch von den anderen Threads aus wo es funktioniert. Ich denke vielmehr das es was mit dem Sprite selbst und multithreading zu tun hat, kann das aber nicht zu 100% bestätigen.
Muss vielleicht auch noch das zu sagen das alle Renderfunktionen mittels Mutex synchronisiert werden.