问题标签 [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.
direct2d - SharpDX 中的测量字符串
我们正在使用SharpDX
. 现在我们必须在 a 中声明一组字符串Rectangle
。为此,我们尝试使用SharpDX.DrawingSizeF
. 例如:
我们试图在MeasureString
不使用的情况下找出答案Windows.Graphics
。可能吗?或者有没有其他方法可以进入MeasureString
或SharpDX
使用Direct2D
?
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。调试输出如下:
directx - 如何在 C++ 中使用 DrawLine(DirectX 图形)
这是文档中的示例。我已经包含了“D2d1.h”,我只是不知道如何创建一个“m_pRenderTarget”。我正在写一个 Kinect 项目,我想在图像上画一条线。我真的很新,请帮助我。
c++ - WIC Direct2D CreateBitmapFromMemory:宽度和高度的限制?
CreateBitmapFromMemory 在_nWidth等于或小于 644时执行成功。 如果该值超过此值,则 HRESULT 值为 -2003292276
宽度和高度是否存在限制?
如果 nWidth 超过 644,则 CreateBitmapFromMemory 返回错误。
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
任何建议赞赏如何实现这一点,谢谢!
ķ
interop - 使用 Direct 2D GdiInteropRenderTarget 的 GDI 对象泄漏
我正在尝试在兼容的渲染目标上同时使用 Gdi 和 Direct 2D 渲染位图。我使用 D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_GDI_COMPATIBLE 选项创建兼容目标,然后执行以下操作:
但似乎出了点问题,因为每次我调用这个渲染方法我都会得到很多 GDI 对象泄漏。我也尝试这样做:
我也有泄漏。我还尝试在由 ID2D1GdiInteropRenderTarget 创建的 HDC 上使用 DeleteDC() 或 ReleaseDC() 但没有成功。
有什么建议吗?提前致谢!
c++ - 创建 SolidColorBrush 时出错
在我的代码中,我试图像这样创建一个 Direct2D SolidColorBrush
当函数被调用时,头文件中CreateSolidColorBrush
会抛出一个错误d2d1.h
这是什么原因造成的?我如何解决它?
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 方面,渲染大量精灵),但也许你们可以提供更多关于这个问题的见解。谢谢!
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 的东西就是空的。对于转换器变量、此变量或图像变量,情况并非如此。
directx - 从 ID2D1BitmapBrush 中检索 IDXGISurface
我的应用程序使用 2 个 DXGISurfaceRenderTargets。
第一个渲染目标用于创建ID2D1Bitmap
,然后ID2D1BitmapBrush
从中创建。
结果ID2D1BitmapBrush
用于第二个渲染目标上的 FillGeometry。
是否可以从或检索IDXGISurface
用于创建的?ID2D1BitmapBrush
ID2D1BitmapBrush
ID2D1Bitmap
Windows 8 有ID2D1Bitmap1
withGetSurface
方法,但我在 Windows 7 上需要这个。
谢谢你。