ID2D1-Freigabe erzwingen bei Fenster-Größenänderung

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
NoFake3D
Beiträge: 59
Registriert: 27.12.2012, 13:12

ID2D1-Freigabe erzwingen bei Fenster-Größenänderung

Beitrag von NoFake3D »

Wie kann man für Windows 8-Store-Apps bei Fenster-Größenänderungen ID2D1 freigeben, damit ResizeBuffers funktioniert?
Bei Windows 8-Desktop-Anwendungen ist das kein Problem, da ich normale Zeiger verwende:

Code: Alles auswählen

//ID2D1Factory1* lp_Direct2D1_Fabrik_1_Schrift_aktuell;

...

if (lp_Direct2D1_Fabrik_1_Schrift_aktuell)
{
	lp_Direct2D1_Fabrik_1_Schrift_aktuell->Release();

	lp_Direct2D1_Fabrik_1_Schrift_aktuell = nullptr;
}
Bei Windows8-Store-Apps verwende ich aber einen COM-Zeiger auf ein ID2D1Factory1-Interface:

Code: Alles auswählen

Microsoft::WRL::ComPtr <ID2D1Factory1> COM_Zeiger_Direct2D1_Fabrik_1_Schrift_aktuell;
Wenn ich für ID2D1 dann ID2D1Device und ID2D1DeviceContext verwenden würde, könnte ich ID2D1 so freigeben:

Code: Alles auswählen

m_d2dContext->SetTarget(nullptr);
Da ich aber ID2D1Device und ID2D1DeviceContext aber nicht benötige (D2D1 und DirectWrite funktionieren für Schriften auch ohne diese Interfaces), müsste ich
dann ID2D1Device und ID2D1DeviceContext leider doch für Fenster-Größenänderungen verwenden (für die Freigabe).
NoFake3D
Beiträge: 59
Registriert: 27.12.2012, 13:12

Re: ID2D1-Freigabe erzwingen bei Fenster-Größenänderung

Beitrag von NoFake3D »

Bei Windows 8.1 Pro Preview (64 Bit) ist das Problem nicht mehr vorhanden.
ID2D1Device und ID2D1DeviceContext brauche ich dann in diesem Fall nicht mehr seit dem Windows-Update.

Die Windows 8.1 Pro Preview gefällt mir auch deshalb sehr gut.

Gruß,
Daniel Klein
Antworten