Perché il testo duplicato eseguito il rendering sul buffer di Z di una trama diversa quando si utilizza D3DXFont :: DrawText?

StackOverflow https://stackoverflow.com/questions/1358896

  •  20-09-2019
  •  | 
  •  

Domanda

Ho inciampare su questo per un po 'e chiedevo se qualcuno ha incontrato questo problema prima.

L'applicazione su cui sto lavorando è diviso in più lotti di dati e una singola timeline nella parte inferiore dello schermo. Ogni trama (che è in realtà strutture multiple strati l'uno sopra l'altro), nonché la sequenza temporale è reso ad una struttura separata. La texture linea temporale è reso per primo, seguito da ciascuna delle texture trama dalla parte superiore dello schermo verso il basso. Sto usando DXUT e DirectX9 (marzo 2009).

Dopo aver aggiunto il testo tempo per la texture timeline, ho notato che il testo è stato ripetuto nella barra del titolo di ogni trama di dati. Ecco uno screencap di una porzione dello schermo, mostra solo una trama unica, ma il testo si ripete su ogni terreno aperto:

alt text

Sembra che è legato direttamente al DrawText chiamato nella funzione rendering della sequenza temporale. Faccio usare coordinate relative, come il rettangolo di essere passato a DrawText, ma dal momento che ho già fissato l'obiettivo di rendering per la consistenza desiderata esso dovrebbe riguardare solo la texture corrente. Non ogni consistenza reso in seguito.

Qualcuno ha mai incorrere in eventuali problemi simili a questo utilizzando D3DXFont?

Modifica : Dopo un po 'di più la sperimentazione, sembra che abbia qualcosa a che fare con il buffer Z. Con l'aggiunta di D3DCLEAR_ZBUFFER alla chiara su ciascuna struttura della superficie, il testo duplicato è andato. Mentre il problema sembra bypassato per ora, io sono ancora curioso di sapere perché il buffer Z per una trama completamente separata veniva scritto durante la mia chiamata DrawText.

È stato utile?

Soluzione

Lo stato Z Buffer è persistente.

Ad esempio,

SetDepthStencilSurface(X)
SetRenderTarget(A)
Draw()
SetRenderTarget(B)
Draw()

Sia Tabellone chiamate utilizzeranno lo stesso tampone profondità.

Il DrawText non cambia il buffer di profondità che è stata impostata. Si presuppone che intendevi fare quello che hai fatto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top