COM interfaces are usually named with increasing numbers to allow for versioning. Once a COM interface has been published publically, COM rules dictate that the interface is not allowed to be changed anymore, or else compatibility with existing code breaks. If new functionality needs to be added, a new interface has to be exposed. Let's take IDWriteFactory1
for example. Today, that is a first release interface. In the future, maybe IDWriteFactory2
will be added that extends IDWriteFactory1
with new methods. Existing code is preserved, since they don't know anything about IDWriteFactory2
, but new code could create an IDWriteFactory1
object and query it to see if it supports IDWriteFactory2
and if so then use the newer methods as needed.
The naming of the D2D1
namespace is likely similar. It is probably being used for versioning purposes (Direct2D v1 ?). Maybe there will be a D2D2
(Direct2D v2) namespace added in the future for things that don't fit in the existing Direct2D architecture. Who knows for sure.