我正在开发Silverlight应用程序,并尝试在我的应用程序中使用3D支持。我用这条线启用了3D支持:
<param name="enableGPUAcceleration" value="true" />
此外,该应用程序通过IIS在localhost:80上运行,并且具有将3D使用设置为“允许”的权限。
我在xaml页面中有一个DrawingSurface并附加了Draw事件,我只需将表面清除为红色。平局不会开火。所以我尝试在MouseLeftButtonDown上使DrawingSurface无效。这是一些代码:
private void TestDrawing_Draw(object sender, System.Windows.Controls.DrawEventArgs e)
{
GraphicsDeviceManager.Current.GraphicsDevice.Clear(new Microsoft.Xna.Framework.Color(255, 0, 0));
}
private void TestDrawing_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (GraphicsDeviceManager.Current.RenderMode == RenderMode.Hardware)
{
TestDrawing.Invalidate();
}
}
检入debugmode,我发现MouseLeftButtonDown事件会触发。 GraphicsDeviceManager.Current.RenderMode设置为RenderMode.Hardware,并执行Invalidate()方法。但是,Draw事件仍然没有发生。
我创建了一个testproject,它通过特定端口上的Developer服务器运行(50814)。同样,enableGPUAcceleration设置为true,权限已设置为Allow。这个测试项目会触发Draw事件。
所以...我的大型应用程序,在IIS服务器(localhost:80)上运行,其中enableGPUAcceleration设置为true,权限设置为Allow不会触发Draw事件。在端口50814上运行Developer服务器的简单测试项目,其中enableGPUAcceleration设置为true,允许权限允许触发Draw事件。
我不知道如何为我的应用程序启用3D。你们有什么建议吗?!
答案 0 :(得分:0)
你的代码只有一次绘制函数,为了让它连续工作,绘制事件应该是这样的:
public void drawingsurface_draw(object sender, DrawEventArgs e)
{
//do some thing here
e.InvalidateSurface();
}