【发布时间】:2021-01-26 01:45:54
【问题描述】:
我正在使用 C 风格界面使用 Direct2D。除了返回结构的两个函数,即ID2D1Bitmap_GetSize 和ID2D1RenderTarget_GetSize 之外,这工作正常。它们返回一个 64 位的 D2D1_SIZE_F 结构(它包含两个 FLOAT 项)。我这样称呼他们:
D2D1_SIZE_F sz;
sz = ID2D1Bitmap_GetSize(pBitmap);
printf("GOT: %f %f\n", sz.width, sz.height);
sz = ID2D1RenderTarget_GetSize(pRenderTarget);
printf("GOT: %f %f\n", sz.width, sz.height);
我从两个GetSize 调用中都得到了虚假值,所以看起来在寄存器级别上有些东西搞砸了。有趣的是,似乎有人遇到了类似的问题 (see here),但他在使用 MinGW 和 C++,人们说这是一个 MinGW 问题。我不在 MinGW 上,但我在旧版本的 Visual C(15.00.30729.01 for x64)上,我不使用 C++,而是使用 C。
由于可能没有人使用 C 中的 Direct2D,我认为很可能其中一些桥接宏被搞砸了并且不能在 C 中工作。这可能是这种情况吗?有什么办法也可以从 C 中进行这项工作吗?
【问题讨论】:
-
非常感谢!我已经破解了
d2d1.h以包含一个额外的指针参数,它确实解决了这个问题!这是否已在较新的 SDK 中修复?从 2012 年左右开始,我仍在使用 SDK。 -
SDK 团队正在努力解决这个问题,但我不确定修复是否已经完成。