I've got a simple DirectX 10 3D program I wrote for class in order to display a varying number of triangles on screen then print out the FPS. I'm having an issue when I attempt to print text to screen. My triangles no longer render and I receive the following error messages in my output window:
D3D10: ERROR: ID3D10Device::Draw: Input Assembler - Vertex Shader linkage error: Signatures between stages are incompatible. The reason is that the input stage requires Semantic/Index (POSITION,0) as input, but it is not provided by the output stage. [ EXECUTION ERROR #342: DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND ]
D3D10: ERROR: ID3D10Device::Draw: Input Assembler - Vertex Shader linkage error: Signatures between stages are incompatible. The reason is that Semantic 'COLOR' is defined for mismatched hardware registers between the output stage and input stage. [ EXECUTION ERROR #343: DEVICE_SHADER_LINKAGE_REGISTERINDEX ]
Any suggestions?
If I do not attempt to run my DrawTextString function everything runs fine.
Code:
void DX10App::DrawTextString(int x, int y, D3DXCOLOR color, const WCHAR* strOutput)
{
LPCWSTR text = LPCWSTR(strOutput);
FontSprite->Begin(0);
RECT rect = {x, y, 100, 50};
Font->DrawText(FontSprite, text, -1, &rect, DT_LEFT, color);
FontSprite->End();
}
void DX10App::Render()
{
D3DXMATRIX mTranslateStart;
D3DXMATRIX mScale;
D3DXMATRIX World1;
D3DXMatrixIdentity(&World1);
float ClearColor[4] = {0.0f, 0.125f, 0.3f, 1.0f};
d3dDevice->ClearRenderTargetView(RenderTargetView, ClearColor);
if(myApp->GetTriMode() == 0)
{
D3DXMatrixScaling(&mScale, 1.0f / triWidth, 1.0f / triHeight, 1.0f);
D3DXMatrixTranslation(&mTranslateStart, -1.0f / (triWidth / (triWidth + 1.0f)), (triHeight - 1.0f) / triHeight, 0.0f);
WorldVariable->SetMatrix((float*)&World1);
D3D10_TECHNIQUE_DESC techDesc;
Technique->GetDesc(&techDesc);
D3DXMatrixIdentity(&World1);
D3DXMatrixMultiply(&World1, &World1, &mScale);
D3DXMatrixMultiply(&World1, &World1, &mTranslateStart);
for(int i = 0; i < triHeight; ++i)
{
for(int j = 0; j < triWidth; ++j)
{
//D3DXMatrixMultiply(&g_World1, &g_World1, &mTranslateRight);
World1._41 += 2.0f / triWidth;
WorldVariable->SetMatrix((float*)&World1);
for(UINT p = 0; p < techDesc.Passes; ++p)
{
Technique->GetPassByIndex(p)->Apply(0);
d3dDevice->Draw(3, 0);
}
}
//D3DXMatrixMultiply(&g_World1, &g_World1, &mTranslateLeft);
World1._41 += -2.0f;
//D3DXMatrixMultiply(&g_World1, &g_World1, &mTranslateDown);
World1._42 += -2.0f / triHeight;
}
}
else if(myApp->GetTriMode() == 1)
{
D3D10_TECHNIQUE_DESC techDesc;
Technique->GetDesc(&techDesc);
WorldVariable->SetMatrix((float*)&World1);
for(UINT p = 0; p < techDesc.Passes; ++p)
{
Technique->GetPassByIndex(p)->Apply(0);
d3dDevice->Draw((int)triHeight * (int)triWidth * 3, 0);
}
}
WCHAR str[255];
swprintf_s(str, 255, L"FPS: %.2f NumTris: %d", FPS, (triWidth * triHeight));
DrawTextString(0, 0, D3DXCOLOR(1.0f, 0.0f, 0.0f, 1.0f), str);
::SetWindowText(m_hWnd, str);
SwapChain->Present(0, 0);
}
|