没有 WPF 或 XNA 的 HLSL?

发布于 2024-12-23 15:56:56 字数 209 浏览 1 评论 0 原文

我有一个使用 winforms 用 VB .NET 4.0 编写的大型科学遗留应用程序。我发现需要像素着色器。为了在这种情况下使用像素着色器,我假设我必须启动一个 WPF 表单,执行一些图形魔法,然后消失该表单。这看起来很尴尬。所以,我的问题是“有没有办法在没有 WPF 或 XNA 的情况下在 winforms 应用程序中使用 HLSL 像素着色器?

非常感谢。

凯瑟琳

I have a large scientific legacy application written in VB .NET 4.0, using winforms. I find the need for pixel shaders. In order to use pixel shaders in this situation, I assume I have to, for example, launch a WPF form, do some graphics magic, then disappear the form. That seems awkward. So, my question is "is there a way to use HLSL pixel shaders in a winforms application without WPF or XNA?

Thank you very much.

katherine

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

向地狱狂奔 2024-12-30 15:56:56

您绝对不想使用 MDX(托管 DirectX 已弃用)或调用本机 DirectX(重新发明轮子)。最好使用 SlimDXSharpDX,两个开源且最新的库。

同样,如果 OpenGL 是一个选项,那么也有像 OpenTK 这样的库。

You definitely don't want to use MDX (Managed DirectX is deprecated) or call into native DirectX (reinventing the wheel). You're much better off using SlimDX or SharpDX, two open-source and up-to-date libraries.

Likewise, if OpenGL is an option then there's libraries like OpenTK for that as well.

孤独陪着我 2024-12-30 15:56:56

HLSL 真的是您想要的吗?如果它是科学应用程序,您可能更适合使用更通用的着色器语言,例如 CG

不过,要回答您的问题,WPF 和 XNA 需要 HLSL,但依赖关系只是一种方式。您最好的选择可能是回退到本机 C++ 代码并以这种方式与 DirectX 或 OpenGL 进行交互 - 此本机界面可以通过 COM。这不是一个漂亮的解决方案,但遗留应用程序从来都不是:)

编辑:我刚刚看到您将 VB.NET 与 .NET 4.0 一起使用。我以为你用的是非常老的 Visual Basic 4!在这种情况下,提到托管 DirectX 包装器 (SlimDX) 的答案是您的最佳选择:)

Is HLSL really what you want? If it's a scientific application you might be better of with a more generalized shader language such as CG.

To answer your question though, WPF and XNA require HLSL, but the dependency is only one way. You best bet is probably to fall back to native C++ code and interface with DirectX or OpenGL that way - this native interface could be integrated with your VB4 app via COM. It is not a pretty solution, but legacy apps never are :)

EDIT: I just saw that you use VB.NET with .NET 4.0. I thought you used the veeery old Visual Basic 4! In that case, the answers which mention a managed DirectX wrapper (SlimDX) are your best option :)

孤云独去闲 2024-12-30 15:56:56

是的,您可以使用 DirectX 在没有 WPF 和 XNA 的情况下使用 HLSL 着色器,您需要创建着色器文件(.fx),然后您可以使用 MDX 库在 C# 或 VB.NET 中使用它。 这里是示例,可以帮助您

Yes, You can use HLSL shader without WPF and XNA by using DirectX, You need to create shader file(.fx) then you can use it in C# or VB.NET by using MDX library. Here is the sample would help you

日记撕了你也走了 2024-12-30 15:56:56

您可以使用本机 DirectX。 Windows 上的 Xna 基本上是 DirectX 包装器。如果您使用本机 DirectX 库,并且熟悉 Xna,您可能可以自己弄清楚其中的大部分内容,但是有很多指南。最难模拟的部分是内容管道。

为此,只需下载最新的 DirectX SDK、安装它,然后添加对 Microsoft.DirectX.* 库的引用。

You could use native DirectX. Xna on Windows is basically a DirectX wrapper. If you use the native DirectX library, you can probably figure most of it out on your own if you are familiar with Xna, but there are many guides. The hardest part to emulate is the Content Pipeline.

To do so, just download the latest DirectX SDK, install it, and add references to the Microsoft.DirectX.* libraries.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文