130 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C#
		
	
	
| using RefreshCS;
 | |
| using System.Runtime.InteropServices;
 | |
| 
 | |
| /* Recreate some structs in here so we don't need to explicitly
 | |
|  * reference the RefreshCS namespace when using MoonWorks.Graphics
 | |
|  */
 | |
| namespace MoonWorks.Graphics
 | |
| {
 | |
|     [StructLayout(LayoutKind.Sequential)]
 | |
|     public struct DepthStencilValue
 | |
|     {
 | |
|         public float depth;
 | |
|         public uint stencil;
 | |
| 
 | |
|         // FIXME: can we do an unsafe cast somehow?
 | |
|         public Refresh.DepthStencilValue ToRefresh()
 | |
|         {
 | |
|             return new Refresh.DepthStencilValue
 | |
|             {
 | |
|                 depth = depth,
 | |
|                 stencil = stencil
 | |
|             };
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     [StructLayout(LayoutKind.Sequential)]
 | |
|     public struct Rect
 | |
|     {
 | |
|         public int x;
 | |
|         public int y;
 | |
|         public int w;
 | |
|         public int h;
 | |
| 
 | |
|         // FIXME: can we do an unsafe cast somehow?
 | |
|         public Refresh.Rect ToRefresh()
 | |
|         {
 | |
|             return new Refresh.Rect
 | |
|             {
 | |
|                 x = x,
 | |
|                 y = y,
 | |
|                 w = w,
 | |
|                 h = h
 | |
|             };
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     [StructLayout(LayoutKind.Sequential)]
 | |
|     public struct Vec4
 | |
|     {
 | |
|         public float x;
 | |
|         public float y;
 | |
|         public float z;
 | |
|         public float w;
 | |
|     }
 | |
| 
 | |
|     [StructLayout(LayoutKind.Sequential)]
 | |
|     public struct Viewport
 | |
|     {
 | |
|         public float x;
 | |
|         public float y;
 | |
|         public float w;
 | |
|         public float h;
 | |
|         public float minDepth;
 | |
|         public float maxDepth;
 | |
|     }
 | |
| 
 | |
|     [StructLayout(LayoutKind.Sequential)]
 | |
|     public struct VertexBinding
 | |
|     {
 | |
|         public uint binding;
 | |
|         public uint stride;
 | |
|         public VertexInputRate inputRate;
 | |
|     }
 | |
| 
 | |
|     [StructLayout(LayoutKind.Sequential)]
 | |
|     public struct VertexAttribute
 | |
|     {
 | |
|         public uint location;
 | |
|         public uint binding;
 | |
|         public VertexElementFormat format;
 | |
|         public uint offset;
 | |
|     }
 | |
| 
 | |
|     [StructLayout(LayoutKind.Sequential)]
 | |
|     public struct ColorTargetDescription
 | |
|     {
 | |
|         public ColorFormat format;
 | |
|         public SampleCount multisampleCount;
 | |
|         public LoadOp loadOp;
 | |
|         public StoreOp storeOp;
 | |
|     }
 | |
| 
 | |
|     [StructLayout(LayoutKind.Sequential)]
 | |
|     public struct DepthStencilTargetDescription
 | |
|     {
 | |
|         public DepthFormat depthFormat;
 | |
|         public LoadOp loadOp;
 | |
|         public StoreOp storeOp;
 | |
|         public LoadOp stencilLoadOp;
 | |
|         public StoreOp stencilStoreOp;
 | |
|     }
 | |
| 
 | |
|     [StructLayout(LayoutKind.Sequential)]
 | |
|     public struct StencilOpState
 | |
|     {
 | |
|         public StencilOp failOp;
 | |
|         public StencilOp passOp;
 | |
|         public StencilOp depthFailOp;
 | |
|         public CompareOp compareOp;
 | |
|         public uint compareMask;
 | |
|         public uint writeMask;
 | |
|         public uint reference;
 | |
| 
 | |
|         // FIXME: can we do an explicit cast here?
 | |
|         public Refresh.StencilOpState ToRefresh()
 | |
|         {
 | |
|             return new Refresh.StencilOpState
 | |
|             {
 | |
|                 failOp = (Refresh.StencilOp)failOp,
 | |
|                 passOp = (Refresh.StencilOp)passOp,
 | |
|                 depthFailOp = (Refresh.StencilOp)depthFailOp,
 | |
|                 compareOp = (Refresh.CompareOp)compareOp,
 | |
|                 compareMask = compareMask,
 | |
|                 writeMask = writeMask,
 | |
|                 reference = reference
 | |
|             };
 | |
|         }
 | |
|     }
 | |
| }
 |