问题标签 [direct2d]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1795 浏览

direct2d - SharpDX 中的测量字符串

我们正在使用SharpDX. 现在我们必须在 a 中声明一组字符串Rectangle。为此,我们尝试使用SharpDX.DrawingSizeF. 例如:

我们试图在MeasureString不使用的情况下找出答案Windows.Graphics。可能吗?或者有没有其他方法可以进入MeasureStringSharpDX使用Direct2D

0 投票
1 回答
1026 浏览

slimdx - 使用 KeyedMutex 的 SlimDX 变形设备

我通过 KeyedMutex 使用 Direct2D 和 DirectX11。如果我使用的是硬件设备,一切都很好。当我默认使用 Warp 设备时,我在创建 Texture2D 对象时遇到问题,我收到错误消息“Direct3D11Exception:E_OUTOFMEMORY:内存不足”

这些是负责的行:

同样,使用硬件设备一切都很好,而不是 Warp。当我对 PIX 运行它时,我看到了这个:

<0x09033390> ID3D11Device:CreateTexture2D(0x0FD1E330, NULL, 0x0FD1E32C --> NULL)

那是使用 Warp 驱动程序,但是当我使用最后一个 NULL 不是 NULL 的硬件时,它是一个指向 D3D11 Texture2D 对象的实际指针。

有什么想法吗?我知道我在这里没有包含太多代码,但我希望有人知道这是什么而不必发布整个 DX 例程。如果需要,我会的。

我确实使用调试和 10.1 DX。调试输出如下:

0 投票
1 回答
4511 浏览

directx - 如何在 C++ 中使用 DrawLine(DirectX 图形)

这是文档中的示例。我已经包含了“D2d1.h”,我只是不知道如何创建一个“m_pRenderTarget”。我正在写一个 Kinect 项目,我想在图像上画一条线。我真的很新,请帮助我。

0 投票
3 回答
4122 浏览

c++ - WIC Direct2D CreateBitmapFromMemory:宽度和高度的限制?

CreateBitmapFromMemory 在_nWidth等于或小于 644时执行成功。 如果该值超过此值,则 HRESULT 值为 -2003292276

宽度和高度是否存在限制?

如果 nWidth 超过 644,则 CreateBitmapFromMemory 返回错误。

0 投票
1 回答
982 浏览

c++ - Windows 8 桌面应用程序,如何使用 ID2D1DeviceContext 渲染到 HWND?

使用示例:

http://msdn.microsoft.com/en-us/library/windows/desktop/hh780339(v=vs.85).aspx

这表示 ID2D1DeviceContext 可用于 Windows 应用商店应用程序(Metro)以及桌面应用程序,并且它可用于呈现到 HWND(c++ 桌面应用程序)。

但是,该示例特定于 Windows::UI:Core::CoreWindow。(Windows 商店/地铁)

这也一样。 http://msdn.microsoft.com/en-us/library/windows/desktop/hh780340(v=vs.85).aspx

任何建议赞赏如何实现这一点,谢谢!

ķ

0 投票
2 回答
1168 浏览

interop - 使用 Direct 2D GdiInteropRenderTarget 的 GDI 对象泄漏

我正在尝试在兼容的渲染目标上同时使用 Gdi 和 Direct 2D 渲染位图。我使用 D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_GDI_COMPATIBLE 选项创建兼容目标,然后执行以下操作:

但似乎出了点问题,因为每次我调用这个渲染方法我都会得到很多 GDI 对象泄漏。我也尝试这样做:

我也有泄漏。我还尝试在由 ID2D1GdiInteropRenderTarget 创建的 HDC 上使用 DeleteDC() 或 ReleaseDC() 但没有成功。

有什么建议吗?提前致谢!

0 投票
0 回答
494 浏览

c++ - 创建 SolidColorBrush 时出错

在我的代码中,我试图像这样创建一个 Direct2D SolidColorBrush

当函数被调用时,头文件中CreateSolidColorBrush会抛出一个错误d2d1.h

这是什么原因造成的?我如何解决它?

0 投票
0 回答
1106 浏览

directx - WinRT 的 2D 精灵游戏:我应该使用 Direct2D BitmapSourceEffect 还是使用自定义简单着色器进行渲染?

语境

我正在构建这个多人 D&D 遭遇工具(在 C# 中用于 WinRT),它是一个简单的基于 2D 网格的实用程序,每个玩家都可以控制他们的角色,DM 能够控制整个环境以及生物等。我决定使用 DirectX (通过SharpDX包装器)而不是标准 XAML 元素(可能也可以处理这种情况)主要是为了学习 DirectX 并可能在较低规格的 PC 上实现更好的性能(不确定 XAML 将如何处理屏幕上的数千个精灵)。

问题

由于我是 DirectX 新手,我想知道绘制精灵(角色、道具、背景图块等)的最佳*方法是什么?

*最好的意思是性能和 GPU 内存要求。我的目标是让这个工具即使在低规格的 ARM 平板电脑上也能很好地运行,我不知道每种方法的要求有多高。

目前我正在使用 Direct2D BitmapSourceEffect并使用WIC API加载每个精灵批次。在这个 SO 问题中描述了我在各种 DirectX 书籍中也遇到的另一种方法:在 DirectX 11 中渲染精灵的最佳实践是什么?

使用 BitmapSourceEffect 似乎更容易,但它是完成这项工作的正确工具吗?我计划在今天晚些时候比较这两种方法(在 FPS 方面,渲染大量精灵),但也许你们可以提供更多关于这个问题的见解。谢谢!

0 投票
1 回答
913 浏览

c++ - C++ Direct2D ID2D1HwndRenderTarget 的父 IUnknown 类的 _vfptr 变量变为空

我正在制作一个 Direct2D 应用程序,并且我正在编写一个 Direct2D 库,它也使我使用 Direct2D 更容易。如果需要,我将发布确切的有问题的代码,但我的主要问题是我在一个类的定义中有一个 ID2D1HwndRenderTarget,我用另一个类扩展了该类,在子类中我有一个调用方法的方法初始化Render Target的父类,然后依次调用子类的load方法。但是,一旦程序到达子类的加载内容方法,ID2D1HwndRenderTarget 的 IUnknown 部分中的 __vfptr 变量(我不知道那是什么)现在为空。我发现这一点的唯一原因是在其他一些代码中,当使用渲染目标从 IWicBitmapSource 创建 ID2D1Bitmap 时,我遇到了访问冲突错误。我不明白这是怎么发生的,因为在初始化渲染目标之后,只要带有初始化代码的方法返回,_vfptr 变量就会变为空。谁能解释为什么会发生这种情况?我的相关代码如下。

此代码被调用一次以创建 hwnd 渲染目标和离屏渲染目标。这是在一个 dll 项目中。游戏基础.cpp

在调用 LoadContent 之后,我不会更改 mainRenderTarget 的值。

DX2DImage.cpp

线路发生Access Violation异常

其中 image->bitmap 是当前为 NULL(就像它应该是)ID2D1Bitmap。

这里,renderTarget 变量与上面 GameBase.cpp 中的 mainRenderTarget 变量相同。当我调试该行时,RenderTarget 的所有父级都不为空,但是一旦我到达它下面的 IUnknown 接口,_vfptr 的东西就是空的。对于转换器变量、此变量或图像变量,情况并非如此。

0 投票
1 回答
170 浏览

directx - 从 ID2D1BitmapBrush 中检索 IDXGISurface

我的应用程序使用 2 个 DXGISurfaceRenderTargets。

第一个渲染目标用于创建ID2D1Bitmap,然后ID2D1BitmapBrush从中创建。

结果ID2D1BitmapBrush用于第二个渲染目标上的 FillGeometry。

是否可以从或检索IDXGISurface用于创建的?ID2D1BitmapBrushID2D1BitmapBrushID2D1Bitmap

Windows 8 有ID2D1Bitmap1withGetSurface方法,但我在 Windows 7 上需要这个。

谢谢你。