D3D11: Как нарисовать текст GDI на поверхности GXDI? (Без D2D)

Мне нужна помощь в рисовании текста в текстуре с помощью GDI и D3D11. Я пробовал использовать D2D / DirectWrite, но он поддерживает только D3D10, а не D3D11, как мне нужно. Все, что я пробовал, пока не удалось ... Теперь я хочу использовать методы GDI для записи в текстуру. Итак, я создал текстуру со следующими параметрами:

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

Затем я создал обычный RenderTargetView из этой текстуры, как говорит Microsoft: http://msdn.microsoft.com/en-us/library/ff476203%28v=vs .85% 29.aspx

Следующий шаг: получить интерфейс DXGI:

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

В функции Render я делаю только следующее:

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;

Проблема в том, что текстура все еще пуста после этого рисования GDI (также проверено с PIX). Все работает, и сообщений об ошибках нет.

Я надеюсь, что кто-нибудь сможет объяснить, как это работает.

Спасибо, Стефан

РЕДАКТИРОВАТЬ: Пробовал также с GetDC (FALSE, & hDc) ( согласно документации): те же результаты -> ничего.

8
задан sandicz 16 May 2011 в 09:05
поделиться