hab so übersetzt:
Delphi-Quellcode:
ID2D1Factory1 = interface(ID2D1Factory)
['{bb12d362-daee-4b9a-aa1d-14ba401cfa1f}']
function CreateDevice(dxgiDevice: IDXGIDevice; out d2dDevice: ID2D1Device): HResult; stdcall;
momentan kämpf ich halt auf zwei Fronten: zum einen das Framework kapieren und zum anderen übersetzen. Und bin mir momentan auch nicht sicher ob ich
falsch übersetzt oder falsch angewendet habe.
Zum Aufruf:
die Klasse vom ID2D1Device ist beim Aufruf nicht nil. GetMaximumTextureMemory z.B. liefert einen Wert zurück.
Über
D2D1CreateDeviceContext
schaff ich's zumindest schon mal einen ID2D1DeviceContext für eine D11-Texture zu kreieren und darauf zu zeichnen
kurzes Code-Schnippsel:
Delphi-Quellcode:
hr := DeviceD11.CreateTexture2D(texDesc, nil, m_pOffscreenTexture);
hr := DeviceD11.CreateShaderResourceView(m_pOffscreenTexture, nil, m_pTextureRV);
{ Direct2D 1.1 }
D2D1CreateFactory(D2D1_FACTORY_TYPE_MULTI_THREADED, ID2D1Factory1, nil, gD2DFactory);
DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, IDWriteFactory, IUnknown(gDWriteFactory));
gDWriteFactory.CreateTextFormat('Calibri', nil, DWRITE_FONT_WEIGHT_REGULAR, DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, 72.0, 'de-gr',
FTextFormat);
FTextFormat.SetWordWrapping(DWRITE_WORD_WRAPPING_NO_WRAP);
lDxgiSurface := nil;
hr := m_pOffscreenTexture.QueryInterface(IDXGISurface, lDxgiSurface);
hr := D2D1CreateDeviceContext(lDxgiSurface, TD2D1_CREATION_PROPERTIES(nil^),m_d2dContext);
m_d2dContext.SetTextAntialiasMode(D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE);
Ergebnis siehe Anhang. Zwar noch nicht viel aber zumindest funktioniert's mal Direct2D 1.1 in Kombination mit Direct3D11
Sobald ich mal ne halbwegs fertig übersetzte Version habe bekommt die Community natürlich das Ergebnis zur Verfügung gestellt
bg