我有一个用VB .NET 4.0编写的大型科学遗留应用程序,使用winforms。我发现需要像素着色器。为了在这种情况下使用像素着色器,我假设我必须,例如,启动一个WPF表单,做一些图形魔术,然后消失表格。这看起来很尴尬。所以,我的问题是“有没有办法在没有WPF或XNA的winforms应用程序中使用HLSL像素着色器?
非常感谢。
凯瑟琳答案 0 :(得分:3)
您绝对不想使用MDX(不推荐使用Managed DirectX)或调用本机DirectX(重新发明轮子)。使用SlimDX或SharpDX,两个开源和最新的库,你会好得多。
同样,如果OpenGL是一个选项,那么也有像OpenTK这样的库。
答案 1 :(得分:2)
HLSL真的是你想要的吗?如果它是一个科学的应用程序,你可能会更好地使用更通用的着色器语言,例如CG。
要回答你的问题,WPF和XNA需要HLSL,但依赖只是一种方式。你最好的选择可能是回归原生C ++代码并以这种方式与DirectX或OpenGL接口 - 这个原生界面可以通过COM与你的VB4应用程序集成。它不是一个漂亮的解决方案,但遗留应用永远不会是:)
编辑:我刚看到你在.NET 4.0中使用VB.NET。我以为你使用了veeery旧的Visual Basic 4!在这种情况下,提及托管DirectX包装器(SlimDX)的答案是您的最佳选择:)答案 2 :(得分:1)
是的,您可以使用DirectX来使用没有WPF和XNA的HLSL着色器,您需要创建着色器文件(.fx),然后您可以使用MDX库在C#或VB.NET中使用它。 Here样本可以帮助您
答案 3 :(得分:-1)
您可以使用原生DirectX。 Windows上的Xna基本上是一个DirectX包装器。如果您使用本机DirectX库,如果您熟悉Xna,可以自己解决大部分问题,但有很多指南。最难模仿的部分是内容管道。
为此,只需下载最新的DirectX SDK,安装它,并添加对Microsoft.DirectX。*库的引用。