问题标签 [sharpdx]

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 回答
4471 浏览

gdi+ - 用 PInvoked GDI 和透明 PNG 替换 GDI+ DrawImage

我在 C# 中创建了一个图像服务,它采用基础层图像 (JPG),再一层透明 PNG(32 位),然后输出最终的 JPG 图像。我试图从这个函数中挤出每一毫秒,我的代码在 GDI+ 中的 DrawImage 调用中遇到瓶颈。这里的托管代码:

现在,我阅读了通过 P/Invoke 直接调用 GDI 获得的性能提升,并尝试替换 DrawImage 调用。我创建了一个单元测试来尝试复制加载 JPG 然后在其上分层一个透明 PNG 的相同功能。

参考:http ://social.msdn.microsoft.com/Forums/en-US/winforms/thread/29582142-0068-40dd-bd99-4b3883a76350

但这无法产生分层图像。只是没有基本 JPG 的 PNG。我应该做些什么不同的事情?当谈到直接的 GDI 时,我有点出类拔萃。

0 投票
2 回答
2590 浏览

asp.net - 通过 SharpDX 渲染 Direct2D 图像时,如何使用内存流而不是文件?

设置

考虑使用SharpDX(Direct* 库的托管包装器)的给定临时程序来呈现位图并将其保存为 PNG:

运行该程序会在程序的工作目录中为您提供一个“test.png”文件,其中包含以下漂亮的图像:

输出图像

问题

太棒了,我刚刚使用 Direct2D 而不是 GDI+ 渲染了一个图像,据说在 ASP.NET 应用程序的上下文中更受支持。另外,Direct2D 是新的热点。

假设我想编写一个函数来渲染这样的图像并将 PNG 作为 aStreambyte[]数组返回,在内存中执行整个渲染和编码操作,而不是写入文件系统。这是为了响应 Web 请求;将其直接流式传输到浏览器而不通过文件系统是有意义的。

在 GDI+ 中,我可以MemoryStream很容易地做到这一点,但在不知道缓冲区大小的情况下,我无法弄清楚如何DataStream在 SharpDX 中发挥我的优势:

  • 我是否必须 P/InvokeCreateStreamOnHGlobal并使用它IntPtr来构建我的DataStream
  • DataStream我错过了一些超载吗?
  • 有没有一种简单的方法来预先计算保存编码的 PNG 图像所需的必要缓冲区?
  • 或者我应该只是通过文件系统克服?

谢谢你的帮助!

0 投票
1 回答
3954 浏览

c# - 如何覆盖 Winforms 控件的绘制方法以使其绘制到纹理?

我正在尝试将 Winforms 与 SharpDX 项目集成,以便在我的 3D 应用程序中使用 Winforms(最终通过 HostElement 使用 WPF)。

我需要创建或配置一个控件或表单,以便我可以:

一种。将其渲染为纹理(我可以将其显示为精灵*)
b. 当控件不活动时过滤其输入以删除鼠标/键盘事件。

我已经尝试将 Control 和 Form 子类化,以覆盖 OnPaint 和 OnPaintBackground,但这些对子控件没有影响 - 或者就此而言,表单边框(即使他们这样做了,它们本身还不够,因为我仍然剩下我假设已经绘制了“父级”的白色方块)。

如何停止在屏幕上绘制控件或表单,而只绘制位图?(例如,有什么方法可以在绘制树之前覆盖 Graphics 吗?)

*它需要以这种方式完成(而不是让控件呈现到屏幕上),因为 Winforms 不支持真正的透明度,所以我需要在我的像素着色器中剪辑颜色编码的像素。

(确认一下,我并不是指 DirectX 纹理——我很满意(实际上更喜欢)一个简单的 System.Drawing 位图)

0 投票
3 回答
5131 浏览

c# - 在 Windows Store App 中使用 SharpDX 加载纹理

我已将我的 C# 游戏从 OpenTK (OpenGL) 转换为 SharpDX (DirectX),并在 Visual Studio 2010 中启动并运行它。我还在 Metro 的 Visual Studio 11 中启动并运行它,在 Windows 8 开发者预览版中。但是,Metro 构建仍然缺少纹理,所以我的多边形现在只是简单地着色。问题是用于加载图像的方法在 Metro DLL 中不存在。Windows Store App 中的 Texture2D 类(继承自 Resource 类)中都缺少这些方法:

有谁知道这些最终是否会在 Metro 中实施?或者有没有我可以使用的替代方法?请记住,在此之前我对 DirectX 或 SharpDX 一无所知,所以我仍然对这一切感到非常兴奋。

为 SharpDX 找到任何类型的帮助或信息并不容易,这是一种耻辱,因为它似乎是使用 C# 在 Metro 中的 3D 的一个很好的解决方案。

0 投票
2 回答
8164 浏览

c# - SharpDX、DirectWrite 和 Windows 窗体

可以使用 DirectWrite 将文本渲染到 WinForm 应用程序中的 PictureBox 吗?

我正在使用 SharpDX 并且已经通过 DirectWrite 示例尝试构建我可以构建的最简单的工作案例。

我创建了一个表单并只添加了一个图片框。然后是下面的代码。窗体显示,但在 PictureBox 中看不到任何内容。

任何指导将不胜感激。

谢谢!

0 投票
5 回答
2590 浏览

c# - 退出 SharpDX 渲染循环

SharpDX 有一个RenderLoop在渲染循环中运行给定委托的:

我需要做的是以某种方式退出渲染循环。

我不能只是return,因为那只会结束当前的循环迭代。

0 投票
1 回答
894 浏览

c# - 高效的 DirectX 渲染

我正在尝试编写一个 DirectX 9.0 控件,该控件将多个 2-D 形状呈现到表面上并允许用户与这些形状进行交互。到目前为止,我已经能够将一百万个不同颜色的三角形渲染到一个网格上,然后用户可以使用鼠标在这个网格周围平移和缩放。但是,我相信,等不及了。我知道我这样做的效率很低……

目前,我为每个三角形都有一个顶点缓冲区,并且在每次渲染时,我都设置了流源并在一个巨人中绘制了图元-环形。对于一个实验,我尝试制作一个包含单个三角形的顶点缓冲区,并在另一个 for 循环中更改世界变换并绘制图元。表现很糟糕。

我真正需要的是某种方式来存储几个独特的形状(大约 100 个),并在世界各地对它们进行 1,000 或 10,000 多次标记。我还希望能够更改形状的单个实例的颜色。我不需要花哨的灯光/纹理/或类似的东西。只是一个简单的颜色。

那么,完成此任务的典型 DirectX 方式是什么?

0 投票
2 回答
1928 浏览

c# - 图形性能提升/GDI 替代方案?

任何人都可以建议 GDI 的任何替代方案吗?原因是我有快速更新的数据,而 GDI 不支持那种渲染速度……我试过 SharpDX 和 SlimDX,但似乎没有一个能正常工作(不能强迫他们在没有错误的情况下绘制表格)

更新 1:我正在用 C# 开发

更新 2:数据绑定到 Visual Studio 2010 默认图表控件。已经编写了很多代码来添加功能,并且在大量数据传入后发现了滞后。原因是我需要与 .NET Framework 4 和 Windows XP 及更高版本兼容。经过一番调查,我发现 SlimDX 和 SharpDX 对显卡、驱动程序以及在 Windows XP 上运行的问题都有严格的要求。

0 投票
1 回答
1486 浏览

c# - 在 Windows 8 Release Preview 中运行 SharpDX 音频样本崩溃

我下载了最新的 SharpDX v2.2 并在 SharpDXSamples.sln 中构建了样本

在此处输入图像描述

当我尝试运行一个使用 XAudio2 的示例时,

在此处输入图像描述

示例崩溃并出现以下错误

在此处输入图像描述

这是堆栈跟踪:

关于发生了什么的任何想法?我需要安装其他库吗???

0 投票
1 回答
10565 浏览

c# - SharpDX vs SlimDX 用于游戏开发?

其中哪一个为游戏开发提供了最好的 API?哪个库更容易使用、速度更快、文档更多?