337 changed files with 7267 additions and 8356 deletions
@ -0,0 +1,5 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="JetBrains.Annotations" Version="10.3.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,5 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="JetBrains.dotMemoryUnit" Version="2.1.20150828.125449" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,5 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="Magick.NET-Q16-AnyCPU" Version="7.0.0.0101" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,9 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="System.ComponentModel.Annotations" Version="4.3.0" /> |
|||
<PackageReference Include="System.Globalization" Version="4.3.0" /> |
|||
<PackageReference Include="System.Linq" Version="4.3.0" /> |
|||
<PackageReference Include="System.Runtime" Version="4.3.0" /> |
|||
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,5 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="Microsoft.CSharp" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,5 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="Microsoft.Reactive.Testing" Version="3.0.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,5 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="Moq" Version="4.7.1" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,6 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="System.Threading.ThreadPool" Version="4.3.0" /> |
|||
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="1.1.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,11 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="System.Reactive" Version="3.0.0" /> |
|||
<PackageReference Include="System.Reactive.Core" Version="3.0.0" /> |
|||
<PackageReference Include="System.Reactive.Interfaces" Version="3.0.0" /> |
|||
<PackageReference Include="System.Reactive.Linq" Version="3.0.0" /> |
|||
<PackageReference Include="System.Reactive.PlatformServices" Version="3.0.0" /> |
|||
<PackageReference Condition="'$(TargetFramework)' == 'net45'" Include="System.Reactive.Windows.Threading" Version="3.0.0" /> |
|||
<PackageReference Condition="'$(TargetFramework)' == 'net461'" Include="System.Reactive.Windows.Threading" Version="3.0.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,5 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="Serilog.Sinks.Trace" Version="2.1.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,5 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="Serilog" Version="2.4.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,8 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="SharpDX" Version="3.1.1" /> |
|||
<PackageReference Include="SharpDX.Direct2D1" Version="3.1.1" /> |
|||
<PackageReference Include="SharpDX.Direct3D11" Version="3.1.1" /> |
|||
<PackageReference Include="SharpDX.DXGI" Version="3.1.1" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,5 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="Avalonia.Skia.Linux.Natives" Version="1.56.1.3" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,5 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="SkiaSharp" Version="1.56.1-beta" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,5 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="Splat" Version="2.0.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,5 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="Sprache" Version="2.1.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,29 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<PropertyGroup> |
|||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo> |
|||
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
|||
<DebugSymbols>true</DebugSymbols> |
|||
<DebugType>full</DebugType> |
|||
<Optimize>false</Optimize> |
|||
<OutputPath>bin\Debug\</OutputPath> |
|||
<DefineConstants>DEBUG;TRACE</DefineConstants> |
|||
<ErrorReport>prompt</ErrorReport> |
|||
<WarningLevel>4</WarningLevel> |
|||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
|||
<DebugType>pdbonly</DebugType> |
|||
<Optimize>true</Optimize> |
|||
<OutputPath>bin\Release\</OutputPath> |
|||
<DefineConstants>TRACE</DefineConstants> |
|||
<ErrorReport>prompt</ErrorReport> |
|||
<WarningLevel>4</WarningLevel> |
|||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> |
|||
</PropertyGroup> |
|||
<ItemGroup> |
|||
<PackageReference Include="System.Threading.Thread" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
<Import Condition="'$(TargetFramework)' == 'net461'" Project="$(MSBuildThisFileDirectory)..\src\Shared\nuget.workaround.targets" /> |
|||
</Project> |
|||
@ -0,0 +1,13 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="xunit" Version="2.2.0" /> |
|||
<PackageReference Include="xunit.abstractions" Version="2.0.1" /> |
|||
<PackageReference Include="xunit.assert" Version="2.2.0" /> |
|||
<PackageReference Include="xunit.core" Version="2.2.0" /> |
|||
<PackageReference Include="xunit.extensibility.core" Version="2.2.0" /> |
|||
<PackageReference Include="xunit.extensibility.execution" Version="2.2.0" /> |
|||
<PackageReference Include="xunit.runner.console" Version="2.2.0" /> |
|||
<PackageReference Condition="'$(TargetFramework)' == 'net461'" Include="xunit.runner.visualstudio" Version="2.2.0" /> |
|||
<PackageReference Condition="'$(TargetFramework)' == 'netcoreapp1.1'" Include="Microsoft.NET.Test.Sdk" Version="15.0.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,27 @@ |
|||
### MSBuild Props |
|||
|
|||
```XML |
|||
<Import Project="..\..\build\JetBrains.Annotations.props" /> |
|||
<Import Project="..\..\build\JetBrains.dotMemoryUnit.props" /> |
|||
<Import Project="..\..\build\Magick.NET-Q16-AnyCPU.props" /> |
|||
<Import Project="..\..\build\Markup.props" /> |
|||
<Import Project="..\..\build\Microsoft.CSharp.props" /> |
|||
<Import Project="..\..\build\Microsoft.Reactive.Testing.props" /> |
|||
<Import Project="..\..\build\Moq.props" /> |
|||
<Import Project="..\..\build\NetCore.props" /> |
|||
<Import Project="..\..\build\Rx.props" /> |
|||
<Import Project="..\..\build\Serilog.props" /> |
|||
<Import Project="..\..\build\Serilog.Sinks.Trace.props" /> |
|||
<Import Project="..\..\build\SharpDX.props" /> |
|||
<Import Project="..\..\build\SkiaSharp.Desktop.props" /> |
|||
<Import Project="..\..\build\SkiaSharp.props" /> |
|||
<Import Project="..\..\build\Splat.props" /> |
|||
<Import Project="..\..\build\Sprache.props" /> |
|||
<Import Project="..\..\build\XUnit.props" /> |
|||
``` |
|||
|
|||
### MSBuild Targets |
|||
|
|||
```XML |
|||
<Import Project="..\..\build\UnitTests.NetCore.targets" /> |
|||
``` |
|||
@ -1,8 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<packages> |
|||
<package id="Serilog" version="1.5.14" targetFramework="net46" /> |
|||
<package id="Splat" version="1.6.2" targetFramework="net46" /> |
|||
<package id="System.Reactive.Core" version="3.0.0" targetFramework="net45" /> |
|||
<package id="System.Reactive.Interfaces" version="3.0.0" targetFramework="net45" /> |
|||
<package id="System.Reactive.Linq" version="3.0.0" targetFramework="net45" /> |
|||
</packages> |
|||
@ -1,4 +0,0 @@ |
|||
<GettingStarted> |
|||
<LocalContent>GS\Android\CS\AndroidApp\GettingStarted.html</LocalContent> |
|||
<EmbeddedNavigation>false</EmbeddedNavigation> |
|||
</GettingStarted> |
|||
@ -1,4 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<packages> |
|||
<package id="Serilog" version="1.5.14" targetFramework="net451" /> |
|||
</packages> |
|||
@ -0,0 +1,14 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<PropertyGroup> |
|||
<OutputType>Exe</OutputType> |
|||
<TargetFramework>netcoreapp1.1</TargetFramework> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\src\Avalonia.DotNetCoreRuntime\Avalonia.DotNetCoreRuntime.csproj" /> |
|||
<ProjectReference Include="..\..\src\Linux\Avalonia.LinuxFramebuffer\Avalonia.LinuxFramebuffer.csproj" /> |
|||
<ProjectReference Include="..\ControlCatalog\ControlCatalog.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
@ -0,0 +1,29 @@ |
|||
using System; |
|||
using System.Linq; |
|||
using Avalonia; |
|||
|
|||
namespace ControlCatalog.NetCore |
|||
{ |
|||
class Program |
|||
{ |
|||
static void Main(string[] args) |
|||
{ |
|||
if (args.Contains("--fbdev")) AppBuilder.Configure<App>().InitializeWithLinuxFramebuffer(tl => |
|||
{ |
|||
tl.Content = new MainView(); |
|||
System.Threading.ThreadPool.QueueUserWorkItem(_ => ConsoleSilencer()); |
|||
}); |
|||
else |
|||
AppBuilder.Configure<App>() |
|||
.UsePlatformDetect() |
|||
.Start<MainWindow>(); |
|||
} |
|||
|
|||
static void ConsoleSilencer() |
|||
{ |
|||
Console.CursorVisible = false; |
|||
while (true) |
|||
Console.ReadKey(true); |
|||
} |
|||
} |
|||
} |
|||
@ -1,4 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<packages> |
|||
<package id="Serilog" version="1.5.14" targetFramework="net46" /> |
|||
</packages> |
|||
@ -1,11 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<packages> |
|||
<package id="Serilog" version="1.5.14" targetFramework="net45" /> |
|||
<package id="Splat" version="1.6.2" targetFramework="net45" /> |
|||
<package id="System.Reactive" version="3.0.0" targetFramework="net45" /> |
|||
<package id="System.Reactive.Core" version="3.0.0" targetFramework="net45" /> |
|||
<package id="System.Reactive.Interfaces" version="3.0.0" targetFramework="net45" /> |
|||
<package id="System.Reactive.Linq" version="3.0.0" targetFramework="net45" /> |
|||
<package id="System.Reactive.PlatformServices" version="3.0.0" targetFramework="net45" /> |
|||
<package id="System.Reactive.Windows.Threading" version="3.0.0" targetFramework="net45" /> |
|||
</packages> |
|||
@ -1,7 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<packages> |
|||
<package id="Serilog" version="1.5.14" targetFramework="net452" /> |
|||
<package id="Splat" version="1.6.2" targetFramework="net452" /> |
|||
<package id="System.Reactive.Core" version="3.0.0" targetFramework="net452" /> |
|||
<package id="System.Reactive.Interfaces" version="3.0.0" targetFramework="net452" /> |
|||
</packages> |
|||
@ -0,0 +1,6 @@ |
|||
<Application xmlns="https://github.com/avaloniaui"> |
|||
<Application.Styles> |
|||
<StyleInclude Source="resm:Avalonia.Themes.Default.DefaultTheme.xaml?assembly=Avalonia.Themes.Default"/> |
|||
<StyleInclude Source="resm:Avalonia.Themes.Default.Accents.BaseLight.xaml?assembly=Avalonia.Themes.Default"/> |
|||
</Application.Styles> |
|||
</Application> |
|||
@ -0,0 +1,13 @@ |
|||
using Avalonia; |
|||
using Avalonia.Markup.Xaml; |
|||
|
|||
namespace Direct3DInteropSample |
|||
{ |
|||
public class App : Application |
|||
{ |
|||
public override void Initialize() |
|||
{ |
|||
AvaloniaXamlLoader.Load(this); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,34 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
<PropertyGroup> |
|||
<OutputType>Exe</OutputType> |
|||
<TargetFramework>net461</TargetFramework> |
|||
</PropertyGroup> |
|||
<ItemGroup> |
|||
<PackageReference Include="SharpDX.Mathematics" Version="3.1.1" /> |
|||
<PackageReference Include="SharpDX.D3DCompiler" Version="3.1.1" /> |
|||
<Compile Update="**\*.paml.cs"> |
|||
<DependentUpon>%(Filename)</DependentUpon> |
|||
</Compile> |
|||
<EmbeddedResource Include="**\*.paml"> |
|||
<SubType>Designer</SubType> |
|||
</EmbeddedResource> |
|||
</ItemGroup> |
|||
<ItemGroup> |
|||
<None Remove="MiniCube.fx" /> |
|||
</ItemGroup> |
|||
<ItemGroup> |
|||
<EmbeddedResource Include="MiniCube.fx" /> |
|||
</ItemGroup> |
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\..\src\Avalonia.DesignerSupport\Avalonia.DesignerSupport.csproj" /> |
|||
<ProjectReference Include="..\..\..\src\Avalonia.DotNetFrameworkRuntime\Avalonia.DotNetFrameworkRuntime.csproj" /> |
|||
<ProjectReference Include="..\..\..\src\Avalonia.Themes.Default\Avalonia.Themes.Default.csproj" /> |
|||
<ProjectReference Include="..\..\..\src\Windows\Avalonia.Direct2D1\Avalonia.Direct2D1.csproj" /> |
|||
<ProjectReference Include="..\..\..\src\Windows\Avalonia.Win32\Avalonia.Win32.csproj" /> |
|||
</ItemGroup> |
|||
<Import Project="..\..\..\build\Serilog.props" /> |
|||
<Import Project="..\..\..\build\Serilog.Sinks.Trace.props" /> |
|||
<Import Project="..\..\..\build\Splat.props" /> |
|||
<Import Project="..\..\..\build\Rx.props" /> |
|||
<Import Project="$(MSBuildThisFileDirectory)..\..\..\src\Shared\nuget.workaround.targets" /> |
|||
</Project> |
|||
@ -0,0 +1,264 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using Avalonia; |
|||
using Avalonia.Controls; |
|||
using Avalonia.Direct2D1.Media; |
|||
using Avalonia.Markup.Xaml; |
|||
using Avalonia.Platform; |
|||
using Avalonia.Rendering; |
|||
using SharpDX; |
|||
using SharpDX.D3DCompiler; |
|||
using SharpDX.Direct2D1; |
|||
using SharpDX.Direct3D; |
|||
using SharpDX.Direct3D11; |
|||
using SharpDX.DXGI; |
|||
using SharpDX.WIC; |
|||
using SharpDX.Mathematics; |
|||
using AlphaMode = SharpDX.Direct2D1.AlphaMode; |
|||
using Buffer = SharpDX.Direct3D11.Buffer; |
|||
using DeviceContext = SharpDX.Direct3D11.DeviceContext; |
|||
using Factory1 = SharpDX.DXGI.Factory1; |
|||
using InputElement = SharpDX.Direct3D11.InputElement; |
|||
using Matrix = SharpDX.Matrix; |
|||
using PixelFormat = SharpDX.Direct2D1.PixelFormat; |
|||
|
|||
namespace Direct3DInteropSample |
|||
{ |
|||
class MainWindow : Window |
|||
{ |
|||
private SharpDX.Direct3D11.Device _d3dDevice; |
|||
private SharpDX.DXGI.Device _dxgiDevice; |
|||
Texture2D backBuffer = null; |
|||
RenderTargetView renderView = null; |
|||
Texture2D depthBuffer = null; |
|||
DepthStencilView depthView = null; |
|||
private readonly SwapChain _swapChain; |
|||
private SwapChainDescription _desc; |
|||
private Matrix _proj = Matrix.Identity; |
|||
private Matrix _view; |
|||
private Buffer _contantBuffer; |
|||
private SharpDX.Direct2D1.Device _d2dDevice; |
|||
private SharpDX.Direct2D1.DeviceContext _d2dContext; |
|||
private RenderTarget _d2dRenderTarget; |
|||
private MainWindowViewModel _model; |
|||
|
|||
public MainWindow() |
|||
{ |
|||
_dxgiDevice = AvaloniaLocator.Current.GetService<SharpDX.DXGI.Device>(); |
|||
_d3dDevice = _dxgiDevice.QueryInterface<SharpDX.Direct3D11.Device>(); |
|||
_d2dDevice = AvaloniaLocator.Current.GetService<SharpDX.Direct2D1.Device>(); |
|||
DataContext = _model = new MainWindowViewModel(); |
|||
_desc = new SwapChainDescription() |
|||
{ |
|||
BufferCount = 1, |
|||
ModeDescription = |
|||
new ModeDescription((int)ClientSize.Width, (int)ClientSize.Height, |
|||
new Rational(60, 1), Format.R8G8B8A8_UNorm), |
|||
IsWindowed = true, |
|||
OutputHandle = PlatformImpl.Handle.Handle, |
|||
SampleDescription = new SampleDescription(1, 0), |
|||
SwapEffect = SwapEffect.Discard, |
|||
Usage = Usage.RenderTargetOutput |
|||
}; |
|||
|
|||
_swapChain = new SwapChain(new Factory1(), _d3dDevice, _desc); |
|||
|
|||
_d2dContext = new SharpDX.Direct2D1.DeviceContext(_d2dDevice, DeviceContextOptions.None) |
|||
{ |
|||
DotsPerInch = new Size2F(96, 96) |
|||
}; |
|||
|
|||
CreateMesh(); |
|||
_view = Matrix.LookAtLH(new Vector3(0, 0, -5), new Vector3(0, 0, 0), Vector3.UnitY); |
|||
this.GetObservable(ClientSizeProperty).Subscribe(Resize); |
|||
Resize(ClientSize); |
|||
AvaloniaXamlLoader.Load(this); |
|||
Background = Avalonia.Media.Brushes.Transparent; |
|||
} |
|||
|
|||
|
|||
protected override void HandlePaint(Rect rect) |
|||
{ |
|||
var viewProj = Matrix.Multiply(_view, _proj); |
|||
var context = _d3dDevice.ImmediateContext; |
|||
// Clear views
|
|||
context.ClearDepthStencilView(depthView, DepthStencilClearFlags.Depth, 1.0f, 0); |
|||
context.ClearRenderTargetView(renderView, Color.White); |
|||
|
|||
var time = 50; |
|||
// Update WorldViewProj Matrix
|
|||
var worldViewProj = Matrix.RotationX((float) _model.RotationX) * Matrix.RotationY((float) _model.RotationY) * |
|||
Matrix.RotationZ((float) _model.RotationZ) |
|||
* Matrix.Scaling((float) _model.Zoom) * viewProj; |
|||
worldViewProj.Transpose(); |
|||
context.UpdateSubresource(ref worldViewProj, _contantBuffer); |
|||
|
|||
// Draw the cube
|
|||
context.Draw(36, 0); |
|||
base.HandlePaint(rect); |
|||
// Present!
|
|||
_swapChain.Present(0, PresentFlags.None); |
|||
} |
|||
|
|||
|
|||
void CreateMesh() |
|||
{ |
|||
var device = _d3dDevice; |
|||
// Compile Vertex and Pixel shaders
|
|||
var vertexShaderByteCode = ShaderBytecode.CompileFromFile("MiniCube.fx", "VS", "vs_4_0"); |
|||
var vertexShader = new VertexShader(device, vertexShaderByteCode); |
|||
|
|||
var pixelShaderByteCode = ShaderBytecode.CompileFromFile("MiniCube.fx", "PS", "ps_4_0"); |
|||
var pixelShader = new PixelShader(device, pixelShaderByteCode); |
|||
|
|||
var signature = ShaderSignature.GetInputSignature(vertexShaderByteCode); |
|||
// Layout from VertexShader input signature
|
|||
var layout = new InputLayout(device, signature, new[] |
|||
{ |
|||
new InputElement("POSITION", 0, Format.R32G32B32A32_Float, 0, 0), |
|||
new InputElement("COLOR", 0, Format.R32G32B32A32_Float, 16, 0) |
|||
}); |
|||
|
|||
// Instantiate Vertex buiffer from vertex data
|
|||
var vertices = Buffer.Create(device, BindFlags.VertexBuffer, new[] |
|||
{ |
|||
new Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f), // Front
|
|||
new Vector4(-1.0f, 1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f), |
|||
new Vector4( 1.0f, 1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f), |
|||
new Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f), |
|||
new Vector4( 1.0f, 1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f), |
|||
new Vector4( 1.0f, -1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f), |
|||
|
|||
new Vector4(-1.0f, -1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f), // BACK
|
|||
new Vector4( 1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f), |
|||
new Vector4(-1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f), |
|||
new Vector4(-1.0f, -1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f), |
|||
new Vector4( 1.0f, -1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f), |
|||
new Vector4( 1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f), |
|||
|
|||
new Vector4(-1.0f, 1.0f, -1.0f, 1.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f), // Top
|
|||
new Vector4(-1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f), |
|||
new Vector4( 1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f), |
|||
new Vector4(-1.0f, 1.0f, -1.0f, 1.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f), |
|||
new Vector4( 1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f), |
|||
new Vector4( 1.0f, 1.0f, -1.0f, 1.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f), |
|||
|
|||
new Vector4(-1.0f,-1.0f, -1.0f, 1.0f), new Vector4(1.0f, 1.0f, 0.0f, 1.0f), // Bottom
|
|||
new Vector4( 1.0f,-1.0f, 1.0f, 1.0f), new Vector4(1.0f, 1.0f, 0.0f, 1.0f), |
|||
new Vector4(-1.0f,-1.0f, 1.0f, 1.0f), new Vector4(1.0f, 1.0f, 0.0f, 1.0f), |
|||
new Vector4(-1.0f,-1.0f, -1.0f, 1.0f), new Vector4(1.0f, 1.0f, 0.0f, 1.0f), |
|||
new Vector4( 1.0f,-1.0f, -1.0f, 1.0f), new Vector4(1.0f, 1.0f, 0.0f, 1.0f), |
|||
new Vector4( 1.0f,-1.0f, 1.0f, 1.0f), new Vector4(1.0f, 1.0f, 0.0f, 1.0f), |
|||
|
|||
new Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 1.0f, 1.0f), // Left
|
|||
new Vector4(-1.0f, -1.0f, 1.0f, 1.0f), new Vector4(1.0f, 0.0f, 1.0f, 1.0f), |
|||
new Vector4(-1.0f, 1.0f, 1.0f, 1.0f), new Vector4(1.0f, 0.0f, 1.0f, 1.0f), |
|||
new Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 1.0f, 1.0f), |
|||
new Vector4(-1.0f, 1.0f, 1.0f, 1.0f), new Vector4(1.0f, 0.0f, 1.0f, 1.0f), |
|||
new Vector4(-1.0f, 1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 1.0f, 1.0f), |
|||
|
|||
new Vector4( 1.0f, -1.0f, -1.0f, 1.0f), new Vector4(0.0f, 1.0f, 1.0f, 1.0f), // Right
|
|||
new Vector4( 1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 1.0f, 1.0f), |
|||
new Vector4( 1.0f, -1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 1.0f, 1.0f), |
|||
new Vector4( 1.0f, -1.0f, -1.0f, 1.0f), new Vector4(0.0f, 1.0f, 1.0f, 1.0f), |
|||
new Vector4( 1.0f, 1.0f, -1.0f, 1.0f), new Vector4(0.0f, 1.0f, 1.0f, 1.0f), |
|||
new Vector4( 1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 1.0f, 1.0f), |
|||
}); |
|||
|
|||
// Create Constant Buffer
|
|||
_contantBuffer = new Buffer(device, Utilities.SizeOf<Matrix>(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0); |
|||
|
|||
var context = _d3dDevice.ImmediateContext; |
|||
|
|||
// Prepare All the stages
|
|||
context.InputAssembler.InputLayout = layout; |
|||
context.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList; |
|||
context.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(vertices, Utilities.SizeOf<Vector4>() * 2, 0)); |
|||
context.VertexShader.SetConstantBuffer(0, _contantBuffer); |
|||
context.VertexShader.Set(vertexShader); |
|||
context.PixelShader.Set(pixelShader); |
|||
} |
|||
|
|||
void Resize(Size size) |
|||
{ |
|||
Utilities.Dispose(ref _d2dRenderTarget); |
|||
Utilities.Dispose(ref backBuffer); |
|||
Utilities.Dispose(ref renderView); |
|||
Utilities.Dispose(ref depthBuffer); |
|||
Utilities.Dispose(ref depthView); |
|||
var context = _d3dDevice.ImmediateContext; |
|||
// Resize the backbuffer
|
|||
_swapChain.ResizeBuffers(_desc.BufferCount, (int)size.Width, (int)size.Height, Format.Unknown, SwapChainFlags.None); |
|||
|
|||
// Get the backbuffer from the swapchain
|
|||
backBuffer = Texture2D.FromSwapChain<Texture2D>(_swapChain, 0); |
|||
|
|||
// Renderview on the backbuffer
|
|||
renderView = new RenderTargetView(_d3dDevice, backBuffer); |
|||
|
|||
// Create the depth buffer
|
|||
depthBuffer = new Texture2D(_d3dDevice, new Texture2DDescription() |
|||
{ |
|||
Format = Format.D32_Float_S8X24_UInt, |
|||
ArraySize = 1, |
|||
MipLevels = 1, |
|||
Width = (int)size.Width, |
|||
Height = (int)size.Height, |
|||
SampleDescription = new SampleDescription(1, 0), |
|||
Usage = ResourceUsage.Default, |
|||
BindFlags = BindFlags.DepthStencil, |
|||
CpuAccessFlags = CpuAccessFlags.None, |
|||
OptionFlags = ResourceOptionFlags.None |
|||
}); |
|||
|
|||
// Create the depth buffer view
|
|||
depthView = new DepthStencilView(_d3dDevice, depthBuffer); |
|||
|
|||
// Setup targets and viewport for rendering
|
|||
context.Rasterizer.SetViewport(new Viewport(0, 0, (int)size.Width, (int)size.Height, 0.0f, 1.0f)); |
|||
context.OutputMerger.SetTargets(depthView, renderView); |
|||
|
|||
// Setup new projection matrix with correct aspect ratio
|
|||
_proj = Matrix.PerspectiveFovLH((float)Math.PI / 4.0f, (float)(size.Width / size.Height), 0.1f, 100.0f); |
|||
|
|||
using (var dxgiBackBuffer = _swapChain.GetBackBuffer<Surface>(0)) |
|||
{ |
|||
_d2dRenderTarget = new RenderTarget(AvaloniaLocator.Current.GetService<SharpDX.Direct2D1.Factory>() |
|||
, dxgiBackBuffer, new RenderTargetProperties |
|||
{ |
|||
DpiX = 96, |
|||
DpiY = 96, |
|||
Type = RenderTargetType.Default, |
|||
PixelFormat = new PixelFormat(Format.Unknown, AlphaMode.Premultiplied) |
|||
}); |
|||
} |
|||
|
|||
} |
|||
|
|||
class D3DRenderTarget: IRenderTarget |
|||
{ |
|||
private readonly MainWindow _window; |
|||
|
|||
public D3DRenderTarget(MainWindow window) |
|||
{ |
|||
_window = window; |
|||
} |
|||
public void Dispose() |
|||
{ |
|||
|
|||
} |
|||
|
|||
public IDrawingContextImpl CreateDrawingContext(IVisualBrushRenderer visualBrushRenderer) |
|||
{ |
|||
return new DrawingContextImpl(visualBrushRenderer, _window._d2dRenderTarget, |
|||
AvaloniaLocator.Current.GetService<SharpDX.DirectWrite.Factory>()); |
|||
} |
|||
} |
|||
|
|||
|
|||
protected override IRenderTarget CreateRenderTarget() => new D3DRenderTarget(this); |
|||
} |
|||
} |
|||
@ -0,0 +1,14 @@ |
|||
<Window xmlns="https://github.com/avaloniaui" Background="White" Title="Avalonia Direct3D Demo"> |
|||
<Grid ColumnDefinitions="*,Auto" Margin="20"> |
|||
<StackPanel Grid.Column="1" MinWidth="200"> |
|||
<TextBlock>Rotation X</TextBlock> |
|||
<Slider Value="{Binding RotationX, Mode=TwoWay}" Maximum="10"/> |
|||
<TextBlock>Rotation Y</TextBlock> |
|||
<Slider Value="{Binding RotationY, Mode=TwoWay}" Maximum="10"/> |
|||
<TextBlock>Rotation Z</TextBlock> |
|||
<Slider Value="{Binding RotationZ, Mode=TwoWay}" Maximum="10"/> |
|||
<TextBlock>Zoom</TextBlock> |
|||
<Slider Value="{Binding Zoom, Mode=TwoWay}" Maximum="3" Minimum="0.5"/> |
|||
</StackPanel> |
|||
</Grid> |
|||
</Window> |
|||
@ -0,0 +1,45 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using ReactiveUI; |
|||
|
|||
namespace Direct3DInteropSample |
|||
{ |
|||
public class MainWindowViewModel : ReactiveObject |
|||
{ |
|||
private double _rotationX; |
|||
|
|||
public double RotationX |
|||
{ |
|||
get { return _rotationX; } |
|||
set { this.RaiseAndSetIfChanged(ref _rotationX, value); } |
|||
} |
|||
|
|||
private double _rotationY = 1; |
|||
|
|||
public double RotationY |
|||
{ |
|||
get { return _rotationY; } |
|||
set { this.RaiseAndSetIfChanged(ref _rotationY, value); } |
|||
} |
|||
|
|||
private double _rotationZ = 2; |
|||
|
|||
public double RotationZ |
|||
{ |
|||
get { return _rotationZ; } |
|||
set { this.RaiseAndSetIfChanged(ref _rotationZ, value); } |
|||
} |
|||
|
|||
|
|||
private double _zoom = 1; |
|||
|
|||
public double Zoom |
|||
{ |
|||
get { return _zoom; } |
|||
set { this.RaiseAndSetIfChanged(ref _zoom, value); } |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,47 @@ |
|||
// Copyright (c) 2010-2013 SharpDX - Alexandre Mutel |
|||
// |
|||
// Permission is hereby granted, free of charge, to any person obtaining a copy |
|||
// of this software and associated documentation files (the "Software"), to deal |
|||
// in the Software without restriction, including without limitation the rights |
|||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|||
// copies of the Software, and to permit persons to whom the Software is |
|||
// furnished to do so, subject to the following conditions: |
|||
// |
|||
// The above copyright notice and this permission notice shall be included in |
|||
// all copies or substantial portions of the Software. |
|||
// |
|||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
|||
// THE SOFTWARE. |
|||
struct VS_IN |
|||
{ |
|||
float4 pos : POSITION; |
|||
float4 col : COLOR; |
|||
}; |
|||
|
|||
struct PS_IN |
|||
{ |
|||
float4 pos : SV_POSITION; |
|||
float4 col : COLOR; |
|||
}; |
|||
|
|||
float4x4 worldViewProj; |
|||
|
|||
PS_IN VS( VS_IN input ) |
|||
{ |
|||
PS_IN output = (PS_IN)0; |
|||
|
|||
output.pos = mul(input.pos, worldViewProj); |
|||
output.col = input.col; |
|||
|
|||
return output; |
|||
} |
|||
|
|||
float4 PS( PS_IN input ) : SV_Target |
|||
{ |
|||
return input.col; |
|||
} |
|||
@ -0,0 +1,17 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using Avalonia; |
|||
|
|||
namespace Direct3DInteropSample |
|||
{ |
|||
class Program |
|||
{ |
|||
static void Main(string[] args) |
|||
{ |
|||
AppBuilder.Configure<App>().UseWin32().UseDirect2D1().Start<MainWindow>(); |
|||
} |
|||
} |
|||
} |
|||
@ -1,19 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<packages> |
|||
<package id="System.Collections" version="4.0.11" targetFramework="monoandroid44" /> |
|||
<package id="System.Collections.Concurrent" version="4.0.12" targetFramework="monoandroid44" /> |
|||
<package id="System.ComponentModel" version="4.0.1" targetFramework="monoandroid44" /> |
|||
<package id="System.Diagnostics.Debug" version="4.0.11" targetFramework="monoandroid44" /> |
|||
<package id="System.Diagnostics.Tools" version="4.0.1" targetFramework="monoandroid44" /> |
|||
<package id="System.Globalization" version="4.0.11" targetFramework="monoandroid44" /> |
|||
<package id="System.Linq" version="4.1.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Reactive.Core" version="3.0.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Reactive.Interfaces" version="3.0.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Reactive.PlatformServices" version="3.0.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Reflection" version="4.1.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Resources.ResourceManager" version="4.0.1" targetFramework="monoandroid44" /> |
|||
<package id="System.Runtime" version="4.1.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Runtime.Extensions" version="4.1.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Threading" version="4.0.11" targetFramework="monoandroid44" /> |
|||
<package id="System.Threading.Tasks" version="4.0.11" targetFramework="monoandroid44" /> |
|||
</packages> |
|||
@ -1,25 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<packages> |
|||
<package id="Serilog" version="1.5.14" targetFramework="monoandroid44" /> |
|||
<package id="Splat" version="1.6.2" targetFramework="monoandroid51" /> |
|||
<package id="Sprache" version="2.1.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Collections" version="4.0.11" targetFramework="monoandroid44" /> |
|||
<package id="System.Collections.Concurrent" version="4.0.12" targetFramework="monoandroid44" /> |
|||
<package id="System.ComponentModel" version="4.0.1" targetFramework="monoandroid44" /> |
|||
<package id="System.Diagnostics.Debug" version="4.0.11" targetFramework="monoandroid44" /> |
|||
<package id="System.Diagnostics.Tools" version="4.0.1" targetFramework="monoandroid44" /> |
|||
<package id="System.Globalization" version="4.0.11" targetFramework="monoandroid44" /> |
|||
<package id="System.Linq" version="4.1.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Reactive" version="3.0.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Reactive.Core" version="3.0.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Reactive.Interfaces" version="3.0.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Reactive.Linq" version="3.0.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Reactive.PlatformServices" version="3.0.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Reflection" version="4.1.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Resources.ResourceManager" version="4.0.1" targetFramework="monoandroid44" /> |
|||
<package id="System.Runtime" version="4.1.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Runtime.Extensions" version="4.1.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Text.RegularExpressions" version="4.1.0" targetFramework="monoandroid44" /> |
|||
<package id="System.Threading" version="4.0.11" targetFramework="monoandroid44" /> |
|||
<package id="System.Threading.Tasks" version="4.0.11" targetFramework="monoandroid44" /> |
|||
</packages> |
|||
@ -1,8 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<packages> |
|||
<package id="System.Reactive" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.Core" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.Interfaces" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.Linq" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.PlatformServices" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
</packages> |
|||
@ -1,41 +0,0 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using Avalonia.Platform; |
|||
|
|||
namespace Avalonia |
|||
{ |
|||
public abstract class AvaloniaDisposable : IDisposable |
|||
{ |
|||
#if DEBUG_DISPOSE
|
|||
public string DisposedAt { get; private set; } |
|||
#endif
|
|||
|
|||
|
|||
public bool IsDisposed { get; private set; } |
|||
|
|||
public void Dispose() |
|||
{ |
|||
IsDisposed = true; |
|||
#if DEBUG_DISPOSE
|
|||
DisposedAt = AvaloniaLocator.Current.GetService<IRuntimePlatform>().GetStackTrace(); |
|||
#endif
|
|||
DoDispose(); |
|||
} |
|||
|
|||
protected void CheckDisposed() |
|||
{ |
|||
if (IsDisposed) |
|||
throw new ObjectDisposedException(GetType().FullName |
|||
#if DEBUG_DISPOSE
|
|||
, "Disposed at: \n" + DisposedAt |
|||
#endif
|
|||
|
|||
); |
|||
} |
|||
|
|||
protected abstract void DoDispose(); |
|||
} |
|||
} |
|||
@ -0,0 +1,39 @@ |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Avalonia.Threading |
|||
{ |
|||
/// <summary>
|
|||
/// Dispatches jobs to a thread.
|
|||
/// </summary>
|
|||
public interface IDispatcher |
|||
{ |
|||
/// <summary>
|
|||
/// Determines whether the calling thread is the thread associated with this <see cref="IDispatcher"/>.
|
|||
/// </summary>
|
|||
/// <returns>True if he calling thread is the thread associated with the dispatched, otherwise false.</returns>
|
|||
bool CheckAccess(); |
|||
|
|||
/// <summary>
|
|||
/// Throws an exception if the calling thread is not the thread associated with this <see cref="IDispatcher"/>.
|
|||
/// </summary>
|
|||
void VerifyAccess(); |
|||
|
|||
/// <summary>
|
|||
/// Invokes a method on the dispatcher thread.
|
|||
/// </summary>
|
|||
/// <param name="action">The method.</param>
|
|||
/// <param name="priority">The priority with which to invoke the method.</param>
|
|||
/// <returns>A task that can be used to track the method's execution.</returns>
|
|||
void InvokeAsync(Action action, DispatcherPriority priority = DispatcherPriority.Normal); |
|||
|
|||
/// <summary>
|
|||
/// Post action that will be invoked on main thread
|
|||
/// </summary>
|
|||
/// <param name="action">The method.</param>
|
|||
/// <param name="priority">The priority with which to invoke the method.</param>
|
|||
// TODO: The naming of this method is confusing: the Async suffix usually means return a task.
|
|||
// Remove this and rename InvokeTaskAsync as InvokeAsync. See #816.
|
|||
Task InvokeTaskAsync(Action action, DispatcherPriority priority = DispatcherPriority.Normal); |
|||
} |
|||
} |
|||
@ -1,9 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<packages> |
|||
<package id="JetBrains.Annotations" version="10.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.Core" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.Interfaces" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.Linq" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.PlatformServices" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
</packages> |
|||
@ -1,9 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<packages> |
|||
<package id="JetBrains.Annotations" version="10.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.Core" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.Interfaces" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.Linq" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.PlatformServices" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
</packages> |
|||
@ -1,8 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<packages> |
|||
<package id="System.Reactive" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.Core" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.Interfaces" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.Linq" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
<package id="System.Reactive.PlatformServices" version="3.0.0" targetFramework="portable45-net45+win8" /> |
|||
</packages> |
|||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue