我使用MonoGame 3.6 Direct3D着色器/效果获得了一个小型测试程序,显示了一个地球模型,大陆用日/夜纹理遮蔽(城市灯光显示在黑暗的一面)。
https://github.com/davidsummers/mgtest
它适用于Windows 7,但不适用于Windows 10 Pro。在Windows 10 Pro上,它不会出现任何错误,只会显示一个黑球。
我上周试图找出可能导致它在Windows 7上正常工作但不能在Windows 10 Pro上正常工作的内容。
我还在https://github.com/MonoGame/MonoGame/issues/6171打开了一个错误报告,到目前为止只有一个回复,有人确认它只是为他们显示黑球。
我的理解是应该在Windows 7和Windows 10 Direct3D之间没有区别,这会阻止Direct3D工作。是这种情况还是我应该做些什么来更新可以在Windows 7和Windows 10上运行的代码?
我在着色器/效果方面相当新,所以对于其他人来说可能有一些我不了解的事情。
我在带有Nvidia Quadro K3000M卡的Dell Precision M6700上使用Windows 10 Pro运行此功能,该卡以前运行的是Windows 7 Pro,并且没有问题地显示地球/大陆/夜间着色器/效果。
该程序在Windows 7 Pro的另一个程序包上仍能正常运行。
关于这个问题的主要问题是:应该在Windows 7上与Direct3D 9配合使用的MonoGame 3.6自定义效果/着色器在Windows 10上运行而不做任何更改吗?
如果没有,需要做些什么改变才能让它发挥作用?
如果它起作用,为什么不起作用?
如果需要更多信息,请与我们联系。
答案 0 :(得分:0)
我已经解决了这个问题。 GitHub上的一位用户告诉我,我有两个应该是相同但不相同的数据结构。
我删除了其中一个并更改了其中一个着色器子程序以使用其他数据结构。
我还发现着色器中的一些(附加)光照变量没有被初始化。
一旦我做了这两件事,那么程序似乎在所有平台上都能正常工作。