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

Code: Alles auswählen

DrawText(mpSprite, ...)
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

Code: Alles auswählen

DrawText(NULL, ...)
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.