Direct2D Fundamentals – Part 2 – Now on Pluralsight!

My latest course is now available on Pluralsight!

Direct2D Fundamentals – Part 2 is so much more than Direct2D. In many ways, it’s an intense crash course in DirectX programming. You’re going to learn about Direct3D, DXGI, devices, swap chains, but it’s more than that.

This course is about developing stunning applications for Windows. You’re going to learn how to develop applications that can run cross-platform, reaching the Windows desktop, Windows Store, and Windows Phone environments. You’re going to learn about performance and efficiency. You’re going to learn how to produce high-quality animation. Moreover, you’re going to do it all in C++.

If you haven’t done so already, start by working through part 1 of Direct2D Fundamentals. This will prepare you by laying the foundation for everything you will learn in this new course.

Here’s a brief description of the modules in Direct2D Fundamentals – Part 2.

What is Direct2D 1.1? Where can it be found? Introduction to the course demo.

Common Foundation
Building the foundation, error handling, and a common set of abstractions for a cross-platform application.

Desktop Window
The reference platform, optimizing window plumbing, and resource handlers.

Understanding and creating the underlying Direct3D device, hardware and software drivers, and the Direct2D device and device context.

Swap Chain
What is DXGI? What is a swap chain? Creating and resizing a swap chain. Targeting, rendering, and presentation with Direct2D and DXGI.

The Clock
How to draw an analog clock with Direct2D primitives and transforms. Adding a background image with DPI awareness. Using image effects to add a shadow.

Revisiting the message loop. Understanding swap chain occlusion and its impact on performance. Power management and efficiency. Using the Windows Animation Manager for scheduled animation.

Windows Runtime
Understanding the CoreWindow abstraction. Optimizing with visibility and the message loop. Using DirectX in the Windows Runtime.

Windows Phone
Limitations in the Windows Phone SDK. Porting the clock application, and unleashing the phone’s awesome power with the restricted API.


7 thoughts on “Direct2D Fundamentals – Part 2 – Now on Pluralsight!

  1. Daniel

    What do you think about the future of Direct2D? I mean, D2D was introduced in 2009(?) but there have not been many updates/advancements.

    There are new solutions like “NV Path” which better utilize the GPU (like HW tessellation/rasterization) and is implemented in OpenGL and hence also available on more platforms (Windows, OSX, Linux). Not only is it faster than D2D, but it also provides higher quality rendering, better 3D Interop and improved font rendering. Slides:

    This makes me think that D2D – or D3D even may not be a long term investment for any 3rd party developer.

    Considering the fact OpenGL is an industry standard and supported by companies like Apple and Google, do you think it still makes sense to learn D2D?

    Thanks for your opinion.

    1. Kenny Kerr Post author

      I have not done any comparative work. My focus is on the Windows family of operating systems where DirectX continues to be the premier technology for exploiting the GPU. Microsoft is continuing to invest heavily in DirectX rather than OpenGL.

      I’m not sure whether you’ve taken a look at Direct2D 1.1, but it is in fact a major improvement, despite its humble version number. It features superb Direct3D interop, as it is no longer an outsider to the DirectX family, and significant performance improvements.

      As I mentioned, I cannot comment on Apple or Linux, but as far as Windows is concerned – Windows 8, Windows RT, Windows Phone 8 – DirectX is the way to go and that means Direct2D and Direct3D.

      Hope that helps.

  2. Adrian

    Hi, Kenny, Just finished this course and have a question relating to resizing and shutdown, if I resize the window and click the close button I get messages regarding DirectX still having reference to resources, Bitmaps etc…If I just shutdown the application without resizing everything works fine. I have double checked the course videos and can’t see anything different to what I typed in, do you have any suggestions?

    Many Thanks

    1. Kenny Kerr Post author

      Hi Adrian, The debug layer reports outstanding references when the Direct2D factory is destroyed. Even if your application is correct and ultimately releases all outstanding references, it will assume they have not been released and report as much when the Direct2D factory is destroyed. The solution is to tell C++ to release your Direct2D factory reference after all other references. You can ensure this happens simply by defining the ComPtr before any other member variables in your window class. Thanks for watching my course!


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s