私は 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 はこの問題の影響を受けず、描画順序の影響を受けます (spriteManager
パラメーターとして渡したためかもしれません)。
私の推測では、描画に使用しているさまざまなデバイスに優先レベルがある可能性があり、どういうわけか spriteHandler は常に上部にレンダリングされ、テクスチャ サイズがその線のセクションをカバーするのに十分な大きさでない場合にのみ線が表示されます (残ります)。灰色の背景と一緒に線を外します)。これを回避するための提案はありますか?