Ho bisogno di aiuto per disegnare un testo su una trama con GDI e D3D11. Ho provato a usare D2D/DirectWrite, ma supporta solo D3D10 e non D3D11 di cui ho bisogno. Tutto ciò che ho provato finora non è riuscito ... Ora voglio usare i metodi GDI per scrivere nella trama. così ho creato una texture con questo params:D3D11: come disegnare il testo GDI su una superficie GXDI? (Senza D2D)
Usage = D3D11_USAGE_DEFAULT;
Format = DXGI_FORMAT_B8G8R8A8_UNORM;
BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET;
CPUAccessFlags = 0;
MiscFlags = D3D11_RESOURCE_MISC_GDI_COMPATIBLE
Poi ho creato una RenderTargetView normale da questa texture come Microsoft sais qui: http://msdn.microsoft.com/en-us/library/ff476203%28v=vs.85%29.aspx
prossimo passo: ottenere l'interfaccia DXGI:
m_pTexFSText->QueryInterface(__uuidof(IDXGISurface1), (void **)(&m_pDXGISurface));
Sulla funzione Render faccio solo questo:
m_pDeviceContext->OMSetRenderTargets(1,&m_pTextRenderTarget,NULL);
HDC hDc = NULL;
if(FAILED(m_pDXGISurface->GetDC(TRUE,&hDc)))
return E_FAIL;
COLORREF bla = SetPixel(hDc,1,1,RGB(255,255,255));
bool hmm = TextOutA(hDc, 10, 10, "LALALA!", 7);
if(FAILED(m_pDXGISurface->ReleaseDC(NULL)))
return E_FAIL;
Il problema è che la texture è ancora vuota dopo il disegno GDI (testato anche con PIX). Tutto funziona e non ci sono messaggi di errore.
Spero che qualcuno possa spiegare come funziona.
Grazie, Stefan
EDIT: Provato anche con GetDC(FALSE,&hDc)
(in base alla documentazione): stessi risultati -> niente.
hai provato un formato di 'DXGI_FORMAT_R8G8B8A8_UINT'? – Necrolis
secondo il docu sul link qui sopra una texture compatibili gdi bisogno formati speciali "è necessario impostare il formato di texture per uno dei seguenti tipi: DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_TYPELESS, DXGI_FORMAT_B8G8R8A8_UNORM_SRGB" – sandicz