[DX10] DrawText Problem / Phenomen

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
kkrahl
Beiträge: 56
Registriert: 20.10.2008, 13:41

[DX10] DrawText Problem / Phenomen

Beitrag 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
Gelöschter Benutzer
Beiträge: 92
Registriert: 26.02.2009, 22:09

Re: [DX10] DrawText Problem / Phenomen

Beitrag 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.
kkrahl
Beiträge: 56
Registriert: 20.10.2008, 13:41

Re: [DX10] DrawText Problem / Phenomen

Beitrag 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.
Antworten