D3D11: zeichnen mit GDI Text zu einem GXDI Oberfläche? (Ohne D2D)

Brauche ich etwas Hilfe mit der Zeichnung einen text auf eine textur mit GDI und D3D11. Ich habe versucht, mit D2D/DirectWrite, aber es unterstützt nur D3D10 und nicht D3D11, wie ich brauche. Alles was ich versuchte scheiterte bisher...
Jetzt will ich mit GDI-Methoden zu schreiben, in der textur.
So habe ich eine textur mit diesem params:

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

Dann ich habe ein normales RenderTargetView von dieser Struktur, wie Sie Microsoft ORKB hier: http://msdn.microsoft.com/en-us/library/ff476203%28v=vs.85%29.aspx

Nächsten Schritt: Holen Sie sich Die DXGI-Schnittstelle:

m_pTexFSText->QueryInterface(__uuidof(IDXGISurface1), (void **)(&m_pDXGISurface));

Auf die Render-Funktion habe ich genau dies tun:

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;

Das problem ist, dass die textur immer noch leer ist, nach, dass GDI-Zeichnung (getestet Auch mit PIX).
Alles funktioniert und es gibt keine Fehlermeldungen.

Ich hoffe, jemand kann erklären, wie es funktioniert.

Dank, Stefan

EDIT: Versucht es auch mit GetDC(FALSE,&hDc) (entsprechend der Dokumentation): dieselben Ergebnisse -> nichts.

  • haben Sie versucht, ein format von DXGI_FORMAT_R8G8B8A8_UINT?
  • laut der Doku auf den link oben, um einen gdi-kompatiblen Texturen braucht man spezielle Formate "müssen Sie das textur-format auf eine der folgenden Arten: DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_TYPELESS, DXGI_FORMAT_B8G8R8A8_UNORM_SRGB"
InformationsquelleAutor sandicz | 2011-05-12
Schreibe einen Kommentar