2012-10-07 165 views
9

我有一个拥有主窗口的WPF应用程序。因为我有一个框架,框架内容是一个页面。未渲染的3D对象

现在页面中有4个viewport3D包含Viewport2DVisual3D,并且我有图像元素。

问题:在某些PC上,我的应用程序运行良好,但在某些PC上,我的应用程序不渲染viewport3d或它不渲染帧。不知道,但它没有在主窗口中显示任何内容。

Acer笔记本电脑Model发生此问题。

渲染: True Image

不会呈现: enter image description here

编辑: 这个问题,当我把架在网格再次发生。 (我在一帧显示此页面,该框架是我窗口的主要内容是:当我放置该框架在网格中也没有显示对象) 看来这Occure上的笔记本电脑共享图形

编辑2:

<Page x:Class="MainPage" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       Loaded="Page_Loaded_1" 
     x:Name="myMainPage" FlowDirection="RightToLeft" > 

    <Page.Resources> 

     <Style TargetType="ContentControl" x:Key="MenuItemsStyle"> 
      <Setter Property="Background" Value="Transparent"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate> 

         <Viewport3D VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ClipToBounds="False"> 
          <Viewport3D.Camera> 
           <PerspectiveCamera x:Name="myCam" FieldOfView="90" Position="{Binding ElementName=myMainWindow, Path=CameraHeight}" NearPlaneDistance="1" FarPlaneDistance="10"/> 
          </Viewport3D.Camera> 

          <ModelVisual3D> 
           <ModelVisual3D.Content> 
            <Model3DGroup> 
             <DirectionalLight Color="#FFFFFFFF" Direction="0,0,-1"/> 
            </Model3DGroup> 
           </ModelVisual3D.Content> 
          </ModelVisual3D> 

          <Viewport2DVisual3D x:Name="V2d3d"> 

           <Viewport2DVisual3D.Transform> 
            <Transform3DGroup> 
             <RotateTransform3D > 
              <RotateTransform3D.Rotation> 
               <AxisAngleRotation3D Axis="0,1,0" Angle="0" x:Name="aar3D"/> 
              </RotateTransform3D.Rotation> 
             </RotateTransform3D> 
            </Transform3DGroup> 
           </Viewport2DVisual3D.Transform> 

           <Viewport2DVisual3D.Material> 
            <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White"/> 
           </Viewport2DVisual3D.Material> 
                   <Viewport2DVisual3D.Geometry> 
            <MeshGeometry3D Positions="{Binding ElementName=myMainWindow, Path=MeshPosions}" 
          TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/> 
           </Viewport2DVisual3D.Geometry> 
           <Border Name="mainBorder" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
            <Border.Style> 
             <Style TargetType="Border"> 
              <Setter Property="BorderThickness" Value="1.2"/> 
              <Setter Property="Background" > 
               <Setter.Value> 
                <SolidColorBrush Color="Transparent"/> 
               </Setter.Value> 
              </Setter> 
              <Setter Property="BorderBrush" > 
               <Setter.Value> 
                <SolidColorBrush Color="Transparent"/> 
               </Setter.Value> 
              </Setter> 
                       </Style> 
            </Border.Style> 
            <ContentPresenter VerticalAlignment="Stretch" HorizontalAlignment="Stretch" 
                 Content="{TemplateBinding ContentControl.Content}"> 
             <ContentPresenter.Triggers> 
              <EventTrigger RoutedEvent="ContentPresenter.MouseLeftButtonDown"> 
               // Axis Animation 
              </EventTrigger> 
             </ContentPresenter.Triggers> 
            </ContentPresenter> 
           </Border> 
          </Viewport2DVisual3D> 
         </Viewport3D> 

        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <EventTrigger RoutedEvent="ContentControl.MouseLeftButtonDown" > 
        //Axis Animation 
       </EventTrigger> 
       <EventTrigger RoutedEvent="ContentControl.MouseEnter"> 
        //ScaleAnimation 
           </EventTrigger> 
       <EventTrigger RoutedEvent="ContentControl.MouseLeave"> 
        //ScaleAnimation 
       </EventTrigger> 
      </Style.Triggers> 
     </Style> 

    </Page.Resources> 

    <Page.Triggers> 
     <EventTrigger RoutedEvent="Loaded"> 
      //Load Object Scale And Fade In 
     </EventTrigger> 
    </Page.Triggers> 

    <Grid Name="MainGrid"> 


       <Canvas Name="MainCanvas" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" FlowDirection="LeftToRight"> 
      <ContentControl Opacity="0" Name="MenuItem1" Style="{StaticResource MenuItemsStyle}" 
          MouseDown="MenuItem1_MouseDown" Panel.ZIndex="1" > 
       <Image Source="/IsargaranProject;component/Images/isargari.jpg"/> 
       <ContentControl.RenderTransform> 
        <ScaleTransform ScaleX="0.7" ScaleY="0.7" x:Name="MenuItem1ST"/> 
       </ContentControl.RenderTransform> 
      </ContentControl> 
     </Canvas> 

    </Grid> 
</Page> 
+2

我只想提出以下几点:1.笔记本电脑上的3D加速设置需要更改。 2. Viewport2DVisual3D未安装在笔记本电脑上。 – WozzeC

+0

您使用的是WPF的哪个版本,您可以提供一些代码,以便我们了解如何构建视图。 – Sam

+0

我添加了代码。我使用.net 4。以及如何安装Viewport2DVisual3D。我必须做什么设置? –

回答

1

如果使用OpenGL或DirectX3D,然后看到,这是不渲染笔记本电脑,都会有一些缺失的插件,像将不会被安装了DirectX 3D或OpenGL你可以试试这个两个3D渲染工具的同样..我曾尝试过这个在过去我做了一个图形程序它有同样的问题,但是当我安装了OPENGL & DirectX3D它工作的很好!

+0

欢迎使用StackOverflow。在回答问题时,请考虑发布证明您的答案的参考资料的链接。例如,你可能会引用一个微软页面,指出viewport3d依赖于OpenGL和/或Direct3D。 – pseudocoder

+0

对不起..!在那个时候我很急,所以我回答的很快,所以忘了添加一个链接,但下次我一定要添加一个链接..!谢谢 –

+0

似乎你之前有这个问题,所以我投票,但我会尝试后者,当我再次看到客户端。 –