ID2D1Factory interface (d2d1.h)

Creates Direct2D resources.

Inheritance

The ID2D1Factory interface inherits from the IUnknown interface. ID2D1Factory also has these types of members:

Methods

The ID2D1Factory interface has these methods.

 
ID2D1Factory::CreateDCRenderTarget

Creates a render target that draws to a Windows Graphics Device Interface (GDI) device context.
ID2D1Factory::CreateDrawingStateBlock

Creates an ID2D1DrawingStateBlock that can be used with the SaveDrawingState and RestoreDrawingState methods of a render target. (overload 1/3)
ID2D1Factory::CreateDrawingStateBlock

Creates an ID2D1DrawingStateBlock that can be used with the SaveDrawingState and RestoreDrawingState methods of a render target. (overload 2/3)
ID2D1Factory::CreateDrawingStateBlock

Creates an ID2D1DrawingStateBlock that can be used with the SaveDrawingState and RestoreDrawingState methods of a render target. (overload 3/3)
ID2D1Factory::CreateDxgiSurfaceRenderTarget

Creates a render target that draws to a DirectX Graphics Infrastructure (DXGI) surface. (overload 1/2)
ID2D1Factory::CreateDxgiSurfaceRenderTarget

Creates a render target that draws to a DirectX Graphics Infrastructure (DXGI) surface. (overload 2/2)
ID2D1Factory::CreateEllipseGeometry

Creates an ID2D1EllipseGeometry. (overload 2/2)
ID2D1Factory::CreateEllipseGeometry

Creates an ID2D1EllipseGeometry. (overload 1/2)
ID2D1Factory::CreateGeometryGroup

Creates an ID2D1GeometryGroup, which is an object that holds other geometries.
ID2D1Factory::CreateHwndRenderTarget

Creates an ID2D1HwndRenderTarget, a render target that renders to a window. (overload 2/2)
ID2D1Factory::CreateHwndRenderTarget

Creates an ID2D1HwndRenderTarget, a render target that renders to a window. (overload 1/2)
ID2D1Factory::CreatePathGeometry

Creates an empty ID2D1PathGeometry.
ID2D1Factory::CreateRectangleGeometry

Creates an ID2D1RectangleGeometry. (overload 2/2)
ID2D1Factory::CreateRectangleGeometry

Creates an ID2D1RectangleGeometry. (overload 1/2)
ID2D1Factory::CreateRoundedRectangleGeometry

Creates an ID2D1RoundedRectangleGeometry. (overload 2/2)
ID2D1Factory::CreateRoundedRectangleGeometry

Creates an ID2D1RoundedRectangleGeometry. (overload 1/2)
ID2D1Factory::CreateStrokeStyle

Creates an ID2D1StrokeStyle that describes start cap, dash pattern, and other features of a stroke. (overload 2/2)
ID2D1Factory::CreateStrokeStyle

Creates an ID2D1StrokeStyle that describes start cap, dash pattern, and other features of a stroke. (overload 1/2)
ID2D1Factory::CreateTransformedGeometry

Transforms the specified geometry and stores the result as an ID2D1TransformedGeometry object. (overload 2/2)
ID2D1Factory::CreateTransformedGeometry

Transforms the specified geometry and stores the result as an ID2D1TransformedGeometry object. (overload 1/2)
ID2D1Factory::CreateWicBitmapRenderTarget

Creates a render target that renders to a Microsoft Windows Imaging Component (WIC) bitmap. (overload 2/2)
ID2D1Factory::CreateWicBitmapRenderTarget

Creates a render target that renders to a Microsoft Windows Imaging Component (WIC) bitmap. (overload 1/2)
ID2D1Factory::GetDesktopDpi

Retrieves the current desktop dots per inch (DPI). To refresh this value, call ReloadSystemMetrics.
ID2D1Factory::ReloadSystemMetrics

Forces the factory to refresh any system defaults that it might have changed since factory creation.

Remarks

The ID2D1Factory interface is the starting point for using Direct2D; it's what you use to create other Direct2D resources that you can use to draw or describe shapes.

A factory defines a set of CreateResource methods that can produce the following drawing resources:

  • Render targets: objects that render drawing commands.
  • Drawing state blocks: objects that store drawing state information, such as the current transformation and antialiasing mode.
  • Geometries: objects that represent simple and potentially complex shapes.

To create an ID2D1Factory, you use one of the CreateFactory methods. You should retain the ID2D1Factory instance for as long as you use Direct2D resources; in general, you shouldn't need to recreate it when the application is running. For more information about Direct2D resources, see the Resources Overview.

Singlethreaded and Multithreaded Factories

When you create a factory, you can specify whether it is multithreaded or singlethreaded. A singlethreaded factory provides no serialization against any other single threaded instance within Direct2D, so, this mechanism provides a very large degree of scaling on the CPU.

You can also create a multithreaded factory instance. In this case, the factory and all derived objects can be used from any thread and each render target can be rendered to independently. Direct2D serializes calls to these objects, so a single multithreaded Direct2D instance won't scale as well on the CPU as many single threaded instances. However, the resources can be shared within the multithreaded instance.

Note that the qualifier "On the CPU": GPUs generally take advantage of fine-grained parallelism more so than CPUs. For example, multithreaded calls from the CPU might still end up being serialized when being sent to the GPU, however, a whole bank of pixel and vertex shaders will run in parallel to perform the rendering.

See Multithreaded Direct2D Apps for more info.

Examples

The following code fragments declare a factory pointer, create a singlethreaded factory instance, and use the factory to create a render target.

ID2D1Factory* m_pDirect2dFactory;

    // Create a Direct2D factory.
    hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &m_pDirect2dFactory);

        // Create a Direct2D render target.
        hr = m_pDirect2dFactory->CreateHwndRenderTarget(
            D2D1::RenderTargetProperties(),
            D2D1::HwndRenderTargetProperties(m_hwnd, size),
            &m_pRenderTarget
            );

Requirements

Requirement Value
Minimum supported client Windows 7, Windows Vista with SP2 and Platform Update for Windows Vista [desktop apps | UWP apps]
Minimum supported server Windows Server 2008 R2, Windows Server 2008 with SP2 and Platform Update for Windows Server 2008 [desktop apps | UWP apps]
Target Platform Windows
Header d2d1.h

See also

Direct2D Overview

Create a simple Direct2D application

Getting Started with Direct2D

IUnknown

Multithreaded Direct2D Apps

Resources Overview