1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
/*-------------------------------------------------------------------------------------
*
* Copyright (c) Microsoft Corporation
* Licensed under the MIT license
*
* dcomp-preview.h - Preview versions of upcoming DirectComposition interfaces.
*
* This file provides preview versions of DirectComposition interfaces that may eventually
* be integrated into the official dcomp.h header of the Windows SDK. The inclusion of an
* interface in this file does not guarantee its future adoption. However, if an interface is
* adopted exactly as defined here, the official definition—including its GUID—will be identical
* to the preview version.
*
* If any modifications are made to an interface prior to its official release, the GUID will be
* updated accordingly. This guarantees that a QueryInterface (QI) call for a PREVIEW_ interface
* is safe: a QI will only succeed if the GUID matches, and will gracefully fail if the official
* version differs.
*
* Developers can transition to the official interfaces by removing the "PREVIEW_" prefix, provided
* that the GUIDs remain the same. Note that some PREVIEW_ interfaces may eventually be deprecated
* and removed from this file. For a smooth migration, it is recommended to adopt the official
* interfaces as soon as they become available in the Windows SDK. The preview interfaces will
* remain available long enough to support this transition.
*
* Always query for these interfaces using QueryInterface and validate the results, rather than
* assuming that the target Windows system supports the required features.
*
*-------------------------------------------------------------------------------------*/
#pragma once
#if (NTDDI_VERSION >= NTDDI_WIN11_GE)
//+-----------------------------------------------------------------------------
//
// Interface:
// PREVIEW_IDCompositionDynamicTexture
//
// Synopsis:
// An interface representing a dynamically changing texture that can be
// bound to a dcomp visual as content.
//
//------------------------------------------------------------------------------
#undef INTERFACE
#define INTERFACE PREVIEW_IDCompositionDynamicTexture
DECLARE_INTERFACE_IID_(PREVIEW_IDCompositionDynamicTexture, IUnknown, "A1DE1D3F-6405-447F-8E95-1383A34B0277")
{
// Set the current texture, assuming that every pixel has changed.
STDMETHOD(SetTexture)(THIS_
_In_ IDCompositionTexture* pTexture) PURE;
// Set the current texture, assuming that only the pixels within the specified dirty rects
// have changed.
//
// DWM will use these dirty rects to optimize redrawing the texture on the screen.
// However, it does not verify the accuracy of the provided rects, so the caller must ensure
// that every changed pixel is covered by at least one rect. There are no guarantees regarding
// the redrawing of pixels outside the specified dirty rects; DWM may choose to redraw
// additional areas if necessary.
//
// If the provided array is empty or if the dirty rects are empty, this method treats the
// texture as unchanged, allowing DWM to skip redrawing.
STDMETHOD(SetTexture)(THIS_
_In_ IDCompositionTexture* pTexture,
_In_count_(rectCount) const D2D_RECT_L *pRects,
_In_ size_t rectCount) PURE;
};
//+-----------------------------------------------------------------------------
//
// Interface:
// PREVIEW_IDCompositionDevice5
//
// Synopsis:
// Serves as the root factory for composition dynamic textures
//
//------------------------------------------------------------------------------
#undef INTERFACE
#define INTERFACE PREVIEW_IDCompositionDevice5
DECLARE_INTERFACE_IID_(PREVIEW_IDCompositionDevice5, IDCompositionDevice4, "2C6BEBFE-A603-472F-AF34-D2443356E61B")
{
STDMETHOD(CreateDynamicTexture)(THIS_
_Outptr_ PREVIEW_IDCompositionDynamicTexture** compositionDynamicTexture) PURE;
};
#endif // #if (NTDDI_VERSION >= NTDDI_WIN11_GE)
|