没有 WPF 或 XNA 的 HLSL?
我有一个使用 winforms 用 VB .NET 4.0 编写的大型科学遗留应用程序。我发现需要像素着色器。为了在这种情况下使用像素着色器,我假设我必须启动一个 WPF 表单,执行一些图形魔法,然后消失该表单。这看起来很尴尬。所以,我的问题是“有没有办法在没有 WPF 或 XNA 的情况下在 winforms 应用程序中使用 HLSL 像素着色器?
非常感谢。
凯瑟琳
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您绝对不想使用 MDX(托管 DirectX 已弃用)或调用本机 DirectX(重新发明轮子)。最好使用 SlimDX 或 SharpDX,两个开源且最新的库。
同样,如果 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.
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 :)
是的,您可以使用 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
您可以使用本机 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.