나는 텍스처를 많이 그리기 위해 directX를 사용하고 있으며 디버깅 목적으로 텍스처 주위에 선을 그려서 직사각형 그리기를하고 싶다. 하지만 문제는 드로잉 순서에 관계없이 항상 선의 맨 위에 텍스처가 표시되는지 여부와 상관없이 배경에 선이 그려져있는 것처럼 보입니다. 드로잉에 사용하는 코드는 다음과 같습니다.텍스처 위에 선을 그릴 수 없음 DirectX
디바이스 :
LPDIRECT3DDEVICE9 graphicsDevice; // this is used for drawing lines
LPD3DXSPRITE spriteHandler; // this is used for drawing texture
LPD3DXFONT textRect; // this is used for drawing texts
렌더링 코드 :
graphicsDevice->Clear(0, NULL, D3DCLEAR_TARGET, BACKGROUND_COLOR, 1.0f, 0);
graphicsDevice->BeginScene();
spriteHandler->Begin(D3DXSPRITE_ALPHABLEND);
renderSprites();
renderText();
renderLines();
spriteHandler->End();
graphicsDevice->EndScene();
graphicsDevice->Present(NULL, NULL, NULL, NULL);
void DirectXGraphics::renderSprites()
{
spriteHandler->Draw(texture,
rect,
NULL,
&position,
DEFAULT_ALPHA_COLOR);
}
void DirectXGraphics::renderLines()
{
graphicsDevice->SetFVF(D3DFVF_XYZRHW|D3DFVF_DIFFUSE);
graphicsDevice->DrawPrimitiveUP(D3DPT_LINESTRIP,
g_width,
LINES,
sizeof(VERTEX_LIST));
}
void DirectXGraphics::renderText()
{
textFont->DrawText ( spriteHandler,
lpcwstrText,
-1,
&textRect,
DT_LEFT,
fontColor);
}
흥미롭게도, textfont가이 문제의 영향 및 그리기 순서의 적용을받습니다되지 않는다 (I 매개 변수로 spriteManager
통과하기 때문에 어쩌면 그것은이다).
내가 추측하는 데 사용하는 다른 장치에 우선 순위 수준이있을 수 있으며 여하튼 spriteHandler는 항상 위쪽에 렌더링되고 선은 텍스처 크기가 해당 선을 덮을만큼 크지 않은 경우에만 볼 수 있습니다 섹션 (회색 배경과 함께 선을 벗어남). 이 문제를 해결하기위한 제안은 무엇입니까? 당신은 깊이 버퍼를 가질 수
나는이 세 줄의 내부'renderLines() SetFVF''전'권리를 추가하지만이 문제를 해결하기 위해 보인다 않았다. 또한 나는 방금 게시물을 편집하고 다른 장치'LPD3DXFONT'를 사용하는'renderText()'를 추가했지만 문제의 영향을받지 않습니다. – ryf9059
스프라이트 그리기를 비활성화하면 선이 올바르게 렌더링됩니까? – catflier
예, 스프라이트를 그리는 선을 주석 처리 한 경우 선이 올바르게 표시되지만 그릴 배경이 없으므로 기본 회색 배경이 표시됩니다 – ryf9059