问题标签 [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.
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 时,我有点出类拔萃。
asp.net - 通过 SharpDX 渲染 Direct2D 图像时,如何使用内存流而不是文件?
设置
考虑使用SharpDX(Direct* 库的托管包装器)的给定临时程序来呈现位图并将其保存为 PNG:
运行该程序会在程序的工作目录中为您提供一个“test.png”文件,其中包含以下漂亮的图像:
问题
太棒了,我刚刚使用 Direct2D 而不是 GDI+ 渲染了一个图像,据说在 ASP.NET 应用程序的上下文中更受支持。另外,Direct2D 是新的热点。
假设我想编写一个函数来渲染这样的图像并将 PNG 作为 aStream
或byte[]
数组返回,在内存中执行整个渲染和编码操作,而不是写入文件系统。这是为了响应 Web 请求;将其直接流式传输到浏览器而不通过文件系统是有意义的。
在 GDI+ 中,我可以MemoryStream
很容易地做到这一点,但在不知道缓冲区大小的情况下,我无法弄清楚如何DataStream
在 SharpDX 中发挥我的优势:
- 我是否必须 P/Invoke
CreateStreamOnHGlobal
并使用它IntPtr
来构建我的DataStream
? DataStream
我错过了一些超载吗?- 有没有一种简单的方法来预先计算保存编码的 PNG 图像所需的必要缓冲区?
- 或者我应该只是通过文件系统克服?
谢谢你的帮助!
c# - 如何覆盖 Winforms 控件的绘制方法以使其绘制到纹理?
我正在尝试将 Winforms 与 SharpDX 项目集成,以便在我的 3D 应用程序中使用 Winforms(最终通过 HostElement 使用 WPF)。
我需要创建或配置一个控件或表单,以便我可以:
一种。将其渲染为纹理(我可以将其显示为精灵*)
b. 当控件不活动时过滤其输入以删除鼠标/键盘事件。
我已经尝试将 Control 和 Form 子类化,以覆盖 OnPaint 和 OnPaintBackground,但这些对子控件没有影响 - 或者就此而言,表单边框(即使他们这样做了,它们本身还不够,因为我仍然剩下我假设已经绘制了“父级”的白色方块)。
如何停止在屏幕上绘制控件或表单,而只绘制位图?(例如,有什么方法可以在绘制树之前覆盖 Graphics 吗?)
*它需要以这种方式完成(而不是让控件呈现到屏幕上),因为 Winforms 不支持真正的透明度,所以我需要在我的像素着色器中剪辑颜色编码的像素。
(确认一下,我并不是指 DirectX 纹理——我很满意(实际上更喜欢)一个简单的 System.Drawing 位图)
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 的一个很好的解决方案。
c# - SharpDX、DirectWrite 和 Windows 窗体
可以使用 DirectWrite 将文本渲染到 WinForm 应用程序中的 PictureBox 吗?
我正在使用 SharpDX 并且已经通过 DirectWrite 示例尝试构建我可以构建的最简单的工作案例。
我创建了一个表单并只添加了一个图片框。然后是下面的代码。窗体显示,但在 PictureBox 中看不到任何内容。
任何指导将不胜感激。
谢谢!
c# - 退出 SharpDX 渲染循环
SharpDX 有一个RenderLoop
在渲染循环中运行给定委托的:
我需要做的是以某种方式退出渲染循环。
我不能只是return
,因为那只会结束当前的循环迭代。
c# - 高效的 DirectX 渲染
我正在尝试编写一个 DirectX 9.0 控件,该控件将多个 2-D 形状呈现到表面上并允许用户与这些形状进行交互。到目前为止,我已经能够将一百万个不同颜色的三角形渲染到一个网格上,然后用户可以使用鼠标在这个网格周围平移和缩放。但是,我相信,等不及了。我知道我这样做的效率很低……
目前,我为每个三角形都有一个顶点缓冲区,并且在每次渲染时,我都设置了流源并在一个巨人中绘制了图元-环形。对于一个实验,我尝试制作一个包含单个三角形的顶点缓冲区,并在另一个 for 循环中更改世界变换并绘制图元。表现很糟糕。
我真正需要的是某种方式来存储几个独特的形状(大约 100 个),并在世界各地对它们进行 1,000 或 10,000 多次标记。我还希望能够更改形状的单个实例的颜色。我不需要花哨的灯光/纹理/或类似的东西。只是一个简单的颜色。
那么,完成此任务的典型 DirectX 方式是什么?
c# - 图形性能提升/GDI 替代方案?
任何人都可以建议 GDI 的任何替代方案吗?原因是我有快速更新的数据,而 GDI 不支持那种渲染速度……我试过 SharpDX 和 SlimDX,但似乎没有一个能正常工作(不能强迫他们在没有错误的情况下绘制表格)
更新 1:我正在用 C# 开发
更新 2:数据绑定到 Visual Studio 2010 默认图表控件。已经编写了很多代码来添加功能,并且在大量数据传入后发现了滞后。原因是我需要与 .NET Framework 4 和 Windows XP 及更高版本兼容。经过一番调查,我发现 SlimDX 和 SharpDX 对显卡、驱动程序以及在 Windows XP 上运行的问题都有严格的要求。
c# - 在 Windows 8 Release Preview 中运行 SharpDX 音频样本崩溃
我下载了最新的 SharpDX v2.2 并在 SharpDXSamples.sln 中构建了样本
当我尝试运行一个使用 XAudio2 的示例时,
示例崩溃并出现以下错误
这是堆栈跟踪:
关于发生了什么的任何想法?我需要安装其他库吗???
c# - SharpDX vs SlimDX 用于游戏开发?
其中哪一个为游戏开发提供了最好的 API?哪个库更容易使用、速度更快、文档更多?