7
我是'wpf'的新手,我已經過了以下問題:在我的項目中,我嘗試使用小分辨率.png作爲模型的紋理。當我在攪拌機禁用mipmapping貼圖(這裏我建的立方體)的結果正是我想要的:wpf中的Mipmapping
但在WPF項目的模糊效果絕不會關閉:
這裏是我的代碼:
<Window x:Class="GCS.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="504" Width="525" ShowInTaskbar="True">
<Grid>
<Viewport3D Name="myViewport"
xmlns="http://schemas.microsoft.com/netfx/2007/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Viewport3D.Resources>
<MaterialGroup x:Key="Material">
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<ImageBrush RenderOptions.BitmapScalingMode="NearestNeighbor" ViewportUnits="Absolute" ImageSource="char.png"/>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</MaterialGroup>
</Viewport3D.Resources>
<Viewport3D.Camera>
<PerspectiveCamera Position="7.8,-11,-0.8" NearPlaneDistance="1" FarPlaneDistance="50" LookDirection="-0.4,0.9,-0.3" UpDirection="0,0,1" FieldOfView="15"/>
</Viewport3D.Camera>
<Viewport3D.Children>
<ModelVisual3D>
<ModelVisual3D.Content>
<Model3DGroup>
<GeometryModel3D Material="{StaticResource Material}">
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetZ="0" OffsetX="0" OffsetY="-7"/>
<ScaleTransform3D ScaleZ="1" ScaleY="1" ScaleX="1"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1,0,0" Angle="92"/>
</RotateTransform3D.Rotation>
</RotateTransform3D>
<TranslateTransform3D OffsetZ="0" OffsetX="0" OffsetY="7"/>
<TranslateTransform3D OffsetZ="-6.622" OffsetX="0" OffsetY="-0.023"/>
</Transform3DGroup>
</GeometryModel3D.Transform>
<GeometryModel3D.Geometry>
<MeshGeometry3D
Normals="-1,0,0 -1,0,0 -1,0,0 -1,0,0 0,0,-1 0,0,-1 0,0,-1 0,0,-1 1,0,0 1,0,0 1,0,0 1,0,0 0,0,1 0,0,1 0,0,1 0,0,1 0,-1,0 0,-1,0 0,-1,0 0,-1,0 0,1,0 0,1,0 0,1,0 0,1,0"
Positions="-1,6,-1 -1,6,1 -1,8,1 -1,8,-1 -1,8,-1 1,8,-1 1,6,-1 -1,6,-1 1,8,-1 1,8,1 1,6,1 1,6,-1 -1,6,1 1,6,1 1,8,1 -1,8,1 -1,6,1 -1,6,-1 1,6,-1 1,6,1 1,8,1 1,8,-1 -1,8,-1 -1,8,1"
TextureCoordinates="0,0.5 0.125,0.5 0.125,0.25 0,0.25 0.5,0.25 0.375,0.25 0.375,0.5 0.5,0.5 0.375,0.25 0.25,0.25 0.25,0.5 0.375,0.5 0.125,0.5 0.25,0.5 0.25,0.25 0.125,0.25 0.375,0.25 0.375,0 0.25,0 0.25,0.25 0.25,0.25 0.25,0 0.125,0 0.125,0.25"
TriangleIndices="0 1 2 0 2 3 4 5 6 4 6 7 8 9 10 8 10 11 12 13 14 12 14 15 16 17 18 16 18 19 20 21 22 20 22 23"/>
</GeometryModel3D.Geometry>
</GeometryModel3D>
</Model3DGroup>
</ModelVisual3D.Content>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<AmbientLight Color="#ffffff"/>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D.Children>
</Viewport3D>
</Grid>
我在互聯網上做了很多搜索,並嘗試了很多方法:強制執行軟件渲染,使用DrawingBrush代替ImageBrush,但結果相同。有沒有辦法克服這種渲染?
要設置'上RenderOptions.BitmapScalingMode'的' ImgaeBrush'。我不知道這是否是解決方案(因此是評論而不是答案),但您也可以在'GeometryModel3D','ModelVisual3D'和'ViewPort3D',以及'Window'和' Grid'。您是否嘗試過任何/所有這些選項以查看它是否有所作爲?在我看來,ImageBrush本身並沒有在3D場景中實際進行縮放,因此在畫筆對象上設置RenderOptions不會產生預期的效果。 –
感謝您的回覆。事實上,我嘗試了所有這些變體,甚至在一起。結果是一樣的((( – user1662530
啊) - 我的猜測是渲染是由你的圖形卡中的3D硬件完成的,在這個硬件上WPF顯然比我們想要的控制更少。猜猜,但我不知道如何,甚至是否有可能重寫它,如果是這種情況。遠景,但你的視頻卡驅動程序是最新的? –