Por que o texto duplicado está sendo renderizado no tampão Z de uma textura diferente ao usar o d3dxfont :: drawtext?

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

  •  20-09-2019
  •  | 
  •  

Pergunta

Eu tenho tropeçado por isso há um tempo e estava me perguntando se alguém já havia encontrado esse problema antes.

O aplicativo em que estou trabalhando é dividido em vários gráficos de dados e uma única linha do tempo na parte inferior da tela. Cada gráfico (que na verdade são várias texturas em camadas uma sobre a outra) e a linha do tempo é renderizada a uma textura separada. A textura da linha do tempo é renderizada primeiro, seguida por cada uma das texturas da plotagem da parte superior da tela para a parte inferior. Estou usando o DXUT e o DirectX9 (março de 2009).

Depois de adicionar o texto do tempo à textura da linha do tempo, notei que o texto foi repetido na barra de título de todos os gráficos de dados. Aqui está um screencap de uma parte da tela, ele mostra apenas um único enredo, mas o texto se repete em cada parcela aberta:

alt text

Parece que está ligado diretamente ao text de drawting que está sendo chamado na função de renderização da linha do tempo. Eu uso coordenadas relativas como o recreto que está sendo transmitido para o drawtext, mas como eu já definei o destino de renderização para a textura desejada, isso deve afetar apenas a textura atual. Nem toda textura renderizada depois.

Alguém já teve problemas semelhantes a isso usando o d3dxfont?

EDITAR: Depois de mais um pouco de experimentação, parece que tem algo a ver com o buffer Z. Ao adicionar d3dclear_zbuffer à limpeza em cada superfície da textura, o texto duplicado se foi. Embora o problema pareça ignorado por enquanto, ainda estou curioso para saber por que o buffer Z para uma textura completamente separada estava sendo escrita durante minha chamada de text de draw.

Foi útil?

Solução

O estado de tampão Z é persistente.

Por exemplo,

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

Ambas as chamadas de desenho usarão o mesmo buffer de profundidade.

O drawtext não está alterando o buffer de profundidade que você definiu. Ele pressupõe que você quis fazer o que fez.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top