--- /dev/null
+/*
+* Copyright (c) 2007-2009 SlimDX Group
+*
+* 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.
+*/
+using SharpDX;
+using SharpDX.Direct3D9;
+using DXGI = SharpDX.DXGI;
+
+namespace SampleFramework
+{
+ static class ConversionMethods
+ {
+ public static int GetDepthBits(Format format)
+ {
+ switch (format)
+ {
+ case Format.D32SingleLockable:
+ case Format.D32:
+ return 32;
+
+ case Format.D24X8:
+ case Format.D24S8:
+ case Format.D24X4S4:
+ case Format.D24SingleS8:
+ return 24;
+
+ case Format.D16Lockable:
+ case Format.D16:
+ return 16;
+
+ case Format.D15S1:
+ return 15;
+
+ default:
+ return 0;
+ }
+ }
+
+ public static int GetStencilBits(Format format)
+ {
+ switch (format)
+ {
+ case Format.D15S1:
+ return 1;
+
+ case Format.D24X4S4:
+ return 4;
+
+ case Format.D24S8:
+ case Format.D24SingleS8:
+ return 8;
+
+ default:
+ return 0;
+ }
+ }
+
+ public static int GetColorBits(Format format)
+ {
+ switch (format)
+ {
+ case Format.R8G8B8:
+ case Format.A8R8G8B8:
+ case Format.A8B8G8R8:
+ case Format.X8R8G8B8:
+ return 8;
+
+ case Format.R5G6B5:
+ case Format.X1R5G5B5:
+ case Format.A1R5G5B5:
+ return 5;
+
+ case Format.A4R4G4B4:
+ case Format.X4R4G4B4:
+ return 4;
+
+ case Format.R3G3B2:
+ case Format.A8R3G3B2:
+ return 2;
+
+ case Format.A2R10G10B10:
+ case Format.A2B10G10R10:
+ return 10;
+
+ case Format.A16B16G16R16:
+ return 16;
+
+ default:
+ return 0;
+ }
+ }
+
+ public static int GetColorBits(DXGI.Format format)
+ {
+ switch (format)
+ {
+ case DXGI.Format.R32G32B32A32_Float:
+ case DXGI.Format.R32G32B32A32_SInt:
+ case DXGI.Format.R32G32B32A32_Typeless:
+ case DXGI.Format.R32G32B32A32_UInt:
+ case DXGI.Format.R32G32B32_Float:
+ case DXGI.Format.R32G32B32_SInt:
+ case DXGI.Format.R32G32B32_Typeless:
+ case DXGI.Format.R32G32B32_UInt:
+ return 32;
+
+ case DXGI.Format.R16G16B16A16_Float:
+ case DXGI.Format.R16G16B16A16_SInt:
+ case DXGI.Format.R16G16B16A16_SNorm:
+ case DXGI.Format.R16G16B16A16_Typeless:
+ case DXGI.Format.R16G16B16A16_UInt:
+ case DXGI.Format.R16G16B16A16_UNorm:
+ return 16;
+
+ case DXGI.Format.R10G10B10A2_Typeless:
+ case DXGI.Format.R10G10B10A2_UInt:
+ case DXGI.Format.R10G10B10A2_UNorm:
+ return 10;
+
+ case DXGI.Format.R8G8B8A8_SInt:
+ case DXGI.Format.R8G8B8A8_SNorm:
+ case DXGI.Format.R8G8B8A8_Typeless:
+ case DXGI.Format.R8G8B8A8_UInt:
+ case DXGI.Format.R8G8B8A8_UNorm:
+ case DXGI.Format.R8G8B8A8_UNorm_SRgb:
+ return 8;
+
+ case DXGI.Format.B5G5R5A1_UNorm:
+ case DXGI.Format.B5G6R5_UNorm:
+ return 5;
+
+ default:
+ return 0;
+ }
+ }
+
+ public static MultisampleType ToDirect3D9(int type)
+ {
+ return (MultisampleType)type;
+ }
+
+ public static Format ToDirect3D9(DXGI.Format format)
+ {
+ switch (format)
+ {
+ case DXGI.Format.R8G8B8A8_UNorm:
+ return Format.A8R8G8B8;
+ case DXGI.Format.B5G6R5_UNorm:
+ return Format.R5G6B5;
+ case DXGI.Format.B5G5R5A1_UNorm:
+ return Format.A1R5G5B5;
+ case DXGI.Format.A8_UNorm:
+ return Format.A8;
+ case DXGI.Format.R10G10B10A2_UNorm:
+ return Format.A2B10G10R10;
+ case DXGI.Format.B8G8R8A8_UNorm:
+ return Format.A8B8G8R8;
+ case DXGI.Format.R16G16_UNorm:
+ return Format.G16R16;
+ case DXGI.Format.R16G16B16A16_UNorm:
+ return Format.A16B16G16R16;
+ case DXGI.Format.R16_Float:
+ return Format.R16F;
+ case DXGI.Format.R16G16_Float:
+ return Format.G16R16F;
+ case DXGI.Format.R16G16B16A16_Float:
+ return Format.A16B16G16R16F;
+ case DXGI.Format.R32_Float:
+ return Format.R32F;
+ case DXGI.Format.R32G32_Float:
+ return Format.G32R32F;
+ case DXGI.Format.R32G32B32A32_Float:
+ return Format.A32B32G32R32F;
+ }
+
+ return Format.Unknown;
+ }
+
+ public static float ToFloat(DXGI.Rational rational)
+ {
+ float denom = 1;
+ if (rational.Denominator != 0)
+ denom = rational.Denominator;
+ return rational.Numerator / denom;
+ }
+ }
+}