OSDN Git Service

Merge branch 'feature/#36529_SlimDXからSharpDXへの移行' into develop
[dtxmania/dtxmania.git] / SlimDXc_Jun2010(VC++2008) / source / direct3d9 / Device.h
diff --git a/SlimDXc_Jun2010(VC++2008)/source/direct3d9/Device.h b/SlimDXc_Jun2010(VC++2008)/source/direct3d9/Device.h
deleted file mode 100644 (file)
index 9f371f5..0000000
+++ /dev/null
@@ -1,1529 +0,0 @@
-/*\r
-* Copyright (c) 2007-2010 SlimDX Group\r
-* \r
-* Permission is hereby granted, free of charge, to any person obtaining a copy\r
-* of this software and associated documentation files (the "Software"), to deal\r
-* in the Software without restriction, including without limitation the rights\r
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
-* copies of the Software, and to permit persons to whom the Software is\r
-* furnished to do so, subject to the following conditions:\r
-* \r
-* The above copyright notice and this permission notice shall be included in\r
-* all copies or substantial portions of the Software.\r
-* \r
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
-* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
-* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
-* THE SOFTWARE.\r
-*/\r
-#pragma once\r
-\r
-#include "Enums.h"\r
-#include "VertexDeclaration.h"\r
-\r
-#include "../math/Plane.h"\r
-#include "../math/Matrix.h"\r
-\r
-#include "Viewport9.h"\r
-#include "PaletteEntry.h"\r
-#include "Light.h"\r
-#include "PatchInfo.h"\r
-#include "Material.h"\r
-#include "GammaRamp.h"\r
-#include "ClipStatus.h"\r
-#include "CreationParameters.h"\r
-#include "RasterStatus.h"\r
-#include "DisplayMode.h"\r
-#include "Capabilities.h"\r
-\r
-namespace SlimDX\r
-{\r
-       value class Matrix;\r
-\r
-       namespace Direct3D9\r
-       {\r
-               ref class PresentParameters;\r
-               ref class IndexBuffer;\r
-               ref class VertexBuffer;\r
-               ref class BaseTexture;\r
-               ref class Texture;\r
-               ref class Surface;\r
-               ref class PixelShader;\r
-               ref class VertexShader;\r
-               ref class SwapChain;\r
-               ref class StateBlock;\r
-\r
-               /// <summary>\r
-               /// Applications use the methods of the Device to perform DrawPrimitive-based rendering, create resources,\r
-               /// work with system-level variables, adjust gamma ramp levels, work with palettes, and create shaders.\r
-               /// </summary>\r
-               /// <unmanaged>IDirect3DDevice9</unmanaged>\r
-               public ref class Device : public ComObject\r
-               {\r
-                       COMOBJECT(IDirect3DDevice9, Device);\r
-\r
-               private protected:\r
-                       Device();\r
-\r
-               public:\r
-                       /// <summary>\r
-                       /// Initializes a new instance of the <see cref="SlimDX::Direct3D9::Device"/> class.\r
-                       /// </summary>\r
-                       /// <param name="adapter">Ordinal number that denotes the display adapter.</param>\r
-                       /// <param name="deviceType">Denotes the desired device type. If the desired device type is not available, device creation will fail.</param>\r
-                       /// <param name="controlHandle">Specifies the target window for Direct3D rendering.</param>\r
-                       /// <param name="createFlags">Combination of one or more options that control device creation.</param>\r
-                       /// <param name="presentParameters">Describes the presentation parameters for the device being created.</param>\r
-                       Device( Direct3D^ direct3D, int adapter, DeviceType deviceType, System::IntPtr controlHandle, CreateFlags createFlags, ... array<PresentParameters^>^ presentParameters );\r
-\r
-                       /// <summary>\r
-                       /// Determines whether the specified query type is supported by the device.\r
-                       /// </summary>\r
-                       /// <param name="type">The query type to check.</param>\r
-                       /// <returns><c>true</c> if the query is supported; otherwise, <c>false</c>.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::CreateQuery</unmanaged>\r
-                       bool IsQuerySupported( QueryType type );\r
-\r
-                       /// <summary>\r
-                       /// Evicts all managed resources, including both Direct3D and driver-managed resources.\r
-                       /// </summary>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::EvictManagedResources</unmanaged>\r
-                       Result EvictManagedResources();\r
-\r
-                       /// <summary>\r
-                       /// Reports on the device's ability to render the current texture-blending operations and arguments in a single pass.\r
-                       /// </summary>\r
-                       /// <returns>The number of passes required to complete the desired effect.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::ValidateDevice</unmanaged>\r
-                       int ValidateDevice();\r
-\r
-                       /// <summary>\r
-                       /// Reports the current cooperative-level status of the device.\r
-                       /// </summary>\r
-                       /// <remarks>\r
-                       /// This function always returns the result of the TestCooperativeLevel call.\r
-                       /// It will not generate an exception for a failed result, or write to <see cref="SlimDX::Result::Last" />.\r
-                       /// As a result, it is important to actually check the returned value.\r
-                       /// </remarks>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::TestCooperativeLevel</unmanaged>\r
-                       Result TestCooperativeLevel();\r
-\r
-                       /// <summary>\r
-                       /// Resets the device.\r
-                       /// </summary>\r
-                       /// <param name="presentParameters">A set of new presentation parameters to apply to the device.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::Reset</unmanaged>\r
-                       Result Reset( PresentParameters^ presentParameters );\r
-\r
-                       /// <summary>\r
-                       /// Clears one or more surfaces such as a render target, a stencil buffer, and a depth buffer.\r
-                       /// </summary>\r
-                       /// <param name="clearFlags">Flags that specify which surfaces will be cleared.</param>\r
-                       /// <param name="color">The color that will be used to fill the cleared render target.</param>\r
-                       /// <param name="zdepth">The value that will be used to fill the cleared depth buffer.</param>\r
-                       /// <param name="stencil">The value that will be used to fill the cleared stencil buffer.</param>\r
-                       /// <param name="rectangles">The areas on the surfaces that will be cleared.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::Clear</unmanaged>\r
-                       Result Clear( ClearFlags clearFlags, Color4 color, float zdepth, int stencil, array<System::Drawing::Rectangle>^ rectangles );\r
-                       \r
-                       /// <summary>\r
-                       /// Clears one or more surfaces such as a render target, a stencil buffer, and a depth buffer.\r
-                       /// </summary>\r
-                       /// <param name="clearFlags">Flags that specify which surfaces will be cleared.</param>\r
-                       /// <param name="color">The color that will be used to fill the cleared render target.</param>\r
-                       /// <param name="zdepth">The value that will be used to fill the cleared depth buffer.</param>\r
-                       /// <param name="stencil">The value that will be used to fill the cleared stencil buffer.</param>\r
-                       /// <param name="rectangles">The areas on the surfaces that will be cleared.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::Clear</unmanaged>\r
-                       Result Clear( ClearFlags clearFlags, int color, float zdepth, int stencil, array<System::Drawing::Rectangle>^ rectangles );\r
-                       \r
-                       /// <summary>\r
-                       /// Clears one or more surfaces such as a render target, a stencil buffer, and a depth buffer.\r
-                       /// </summary>\r
-                       /// <param name="clearFlags">Flags that specify which surfaces will be cleared.</param>\r
-                       /// <param name="color">The color that will be used to fill the cleared render target.</param>\r
-                       /// <param name="zdepth">The value that will be used to fill the cleared depth buffer.</param>\r
-                       /// <param name="stencil">The value that will be used to fill the cleared stencil buffer.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::Clear</unmanaged>\r
-                       Result Clear( ClearFlags clearFlags, Color4 color, float zdepth, int stencil );\r
-                       \r
-                       /// <summary>\r
-                       /// Clears one or more surfaces such as a render target, a stencil buffer, and a depth buffer.\r
-                       /// </summary>\r
-                       /// <param name="clearFlags">Flags that specify which surfaces will be cleared.</param>\r
-                       /// <param name="color">The color that will be used to fill the cleared render target.</param>\r
-                       /// <param name="zdepth">The value that will be used to fill the cleared depth buffer.</param>\r
-                       /// <param name="stencil">The value that will be used to fill the cleared stencil buffer.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::Clear</unmanaged>\r
-                       Result Clear( ClearFlags clearFlags, int color, float zdepth, int stencil );\r
-                       \r
-                       /// <summary>\r
-                       /// Begins a scene.\r
-                       /// </summary>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::BeginScene</unmanaged>\r
-                       Result BeginScene();\r
-                       \r
-                       /// <summary>\r
-                       /// Ends a scene.\r
-                       /// </summary>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::EndScene</unmanaged>\r
-                       Result EndScene();\r
-\r
-                       /// <summary>\r
-                       /// Presents the contents of the next buffer in the sequence of back buffers to the screen.\r
-                       /// </summary>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::Present</unmanaged>\r
-                       Result Present();\r
-\r
-                       /// <summary>\r
-                       /// Presents the contents of the first swap chain in the device. \r
-                       /// </summary>\r
-                       /// <param name="flags">Flags used to specify how the swap chain should be presented.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::Present</unmanaged>\r
-                       Result Present( SlimDX::Direct3D9::Present flags );\r
-\r
-                       /// <summary>\r
-                       /// Presents the contents of the next buffer in the sequence of back buffers to the screen.\r
-                       /// </summary>\r
-                       /// <param name="sourceRectangle">The area of the back buffer that should be presented.</param>\r
-                       /// <param name="destinationRectangle">The area of the front buffer that should receive the result of the presentation.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::Present</unmanaged>\r
-                       Result Present( System::Drawing::Rectangle sourceRectangle, System::Drawing::Rectangle destinationRectangle );\r
-                       \r
-                       /// <summary>\r
-                       /// Presents the contents of the next buffer in the sequence of back buffers to the screen.\r
-                       /// </summary>\r
-                       /// <param name="sourceRectangle">The area of the back buffer that should be presented.</param>\r
-                       /// <param name="destinationRectangle">The area of the front buffer that should receive the result of the presentation.</param>\r
-                       /// <param name="windowOverride">The destination window whose client area is taken as the target for this presentation.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::Present</unmanaged>\r
-                       Result Present( System::Drawing::Rectangle sourceRectangle, System::Drawing::Rectangle destinationRectangle, System::IntPtr windowOverride );\r
-                       \r
-                       /// <summary>\r
-                       /// Presents the contents of the next buffer in the sequence of back buffers to the screen.\r
-                       /// </summary>\r
-                       /// <param name="sourceRectangle">The area of the back buffer that should be presented.</param>\r
-                       /// <param name="destinationRectangle">The area of the front buffer that should receive the result of the presentation.</param>\r
-                       /// <param name="windowOverride">The destination window whose client area is taken as the target for this presentation.</param>\r
-                       /// <param name="region">Specifies a region on the back buffer that contains the minimal amount of pixels that need to be updated.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::Present</unmanaged>\r
-                       Result Present( System::Drawing::Rectangle sourceRectangle, System::Drawing::Rectangle destinationRectangle, System::IntPtr windowOverride, System::Drawing::Region^ region );\r
-\r
-                       /// <summary>\r
-                       /// Retrieves a back buffer from the device's swap chain.\r
-                       /// </summary>\r
-                       /// <param name="swapChain">The desired swap chain.</param>\r
-                       /// <param name="backBuffer">Index of the back buffer object to return.</param>\r
-                       /// <returns>The requested back buffer surface.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetBackBuffer</unmanaged>\r
-                       Surface^ GetBackBuffer( int swapChain, int backBuffer );\r
-\r
-                       /// <summary>\r
-                       /// Retrieves a render target surface.\r
-                       /// </summary>\r
-                       /// <param name="index">The index of the render target.</param>\r
-                       /// <returns>A surface representing the desired render target.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetRenderTarget</unmanaged>\r
-                       Surface^ GetRenderTarget( int index );\r
-\r
-                       /// <summary>\r
-                       /// Gets a reference to the specified swap chain.\r
-                       /// </summary>\r
-                       /// <param name="swapChainIndex">The index of the desired swap chain.</param>\r
-                       /// <returns>The requested swap chain reference.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetSwapChain</unmanaged>\r
-                       SwapChain^ GetSwapChain( int swapChainIndex );\r
-\r
-                       /// <summary>\r
-                       /// Gets information describing the raster of the monitor on which the swap chain is presented.\r
-                       /// </summary>\r
-                       /// <param name="swapChain">The swap chain whose raster status is to be retrieved.</param>\r
-                       /// <returns>The raster status of the specified swap chain.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetRasterStatus</unmanaged>\r
-                       RasterStatus GetRasterStatus( int swapChain );\r
-\r
-                       /// <summary>\r
-                       /// Retrieve's the display mode's spatial resolution, color resolution, and refresh frequency.\r
-                       /// </summary>\r
-                       /// <param name="swapChain">The index of the swap chain whose display mode is to be retrieved.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetDisplayMode</unmanaged>\r
-                       DisplayMode GetDisplayMode( int swapChain );\r
-\r
-                       /// <summary>\r
-                       /// Gets the currently set user-defined clipping plane.\r
-                       /// </summary>\r
-                       /// <param name="index">Index of the desired clipping plane.</param>\r
-                       /// <returns>The requested clipping plane.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetClipPlane</unmanaged>\r
-                       Plane GetClipPlane( int index );\r
-\r
-                       /// <summary>\r
-                       /// Retrieves a render-state value for the device.\r
-                       /// </summary>\r
-                       /// <typeparam name="T">The type of the data being returned.</typeparam>\r
-                       /// <param name="state">The render state whose value is being requested.</param>\r
-                       /// <returns>The value of the requested render state.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetRenderState</unmanaged>\r
-                       generic<typename T> where T : value class\r
-                               T GetRenderState( RenderState state );\r
-\r
-                       /// <summary>\r
-                       /// Retrieves a render-state value for the device.\r
-                       /// </summary>\r
-                       /// <param name="state">The render state whose value is being requested.</param>\r
-                       /// <returns>The value of the requested render state.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetRenderState</unmanaged>\r
-                       int GetRenderState( RenderState state );\r
-\r
-                       /// <summary>\r
-                       /// Retrieves a sampler state value for the device.\r
-                       /// </summary>\r
-                       /// <typeparam name="T">The type of the data being returned.</typeparam>\r
-                       /// <param name="sampler">The sampler stage index.</param>\r
-                       /// <param name="type">The sampler state whose value is being requested.</param>\r
-                       /// <returns>The value of the requested sampler state.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetSamplerState</unmanaged>\r
-                       generic<typename T> where T : value class\r
-                               T GetSamplerState( int sampler, SamplerState type );\r
-\r
-                       /// <summary>\r
-                       /// Retrieves a sampler state value for the device.\r
-                       /// </summary>\r
-                       /// <param name="sampler">The sampler stage index.</param>\r
-                       /// <param name="type">The sampler state whose value is being requested.</param>\r
-                       /// <returns>The value of the requested sampler state.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetSamplerState</unmanaged>\r
-                       int GetSamplerState( int sampler, SamplerState type );\r
-\r
-                       /// <summary>\r
-                       /// Retrieves a texture stage state value for the device.\r
-                       /// </summary>\r
-                       /// <typeparam name="T">The type of the data being returned.</typeparam>\r
-                       /// <param name="stage">The texture stage.</param>\r
-                       /// <param name="type">The texture stage state whose value is being requested.</param>\r
-                       /// <returns>The value of the requested texture stage state.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetTextureStageState</unmanaged>\r
-                       generic<typename T> where T : value class\r
-                               T GetTextureStageState( int stage, TextureStage type );\r
-\r
-                       /// <summary>\r
-                       /// Retrieves a texture stage state value for the device.\r
-                       /// </summary>\r
-                       /// <param name="stage">The texture stage.</param>\r
-                       /// <param name="type">The texture stage state whose value is being requested.</param>\r
-                       /// <returns>The value of the requested texture stage state.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetTextureStageState</unmanaged>\r
-                       int GetTextureStageState( int stage, TextureStage type );\r
-\r
-                       /// <summary>\r
-                       /// Gets the texture assigned to the specified stage.\r
-                       /// </summary>\r
-                       /// <returns>The texture assigned to the specified stage.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetTexture</unmanaged>\r
-                       BaseTexture^ GetTexture( int stage );\r
-\r
-                       /// <summary>\r
-                       /// Retrieves a vertex buffer bound to the specified data stream.\r
-                       /// </summary>\r
-                       /// <param name="stream">A zero-based index specifying the data stream.</param>\r
-                       /// <param name="streamData">A vertex buffer representing the data stream.</param>\r
-                       /// <param name="offsetInBytes">The offset from the beginning of the stream to the beginning of vertex data, measured in bytes.</param>\r
-                       /// <param name="stride">The stride of the vertex data, in bytes.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetStreamSource</unmanaged>\r
-                       Result GetStreamSource( int stream, [Out] VertexBuffer^% streamData, [Out] int% offsetInBytes, [Out] int% stride );\r
-                       \r
-                       /// <summary>\r
-                       /// Gets the stream source frequency divider value.\r
-                       /// </summary>\r
-                       /// <param name="stream">A zero-based index specifying the data stream.</param>\r
-                       /// <returns>The frequency divider value.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetStreamSourceFrequency</unmanaged>\r
-                       Result GetStreamSourceFrequency( int stream, [Out] int% frequency, [Out] StreamSource% source );\r
-\r
-                       /// <summary>\r
-                       /// Generates a copy of the device's front buffer and places that copy into the specified surface.\r
-                       /// </summary>\r
-                       /// <param name="swapChain">Index of the swap chain whose front buffer is to be copied.</param>\r
-                       /// <param name="destinationSurface">The surface that will receive the copy of the front buffer.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetFrontBufferData</unmanaged>\r
-                       Result GetFrontBufferData( int swapChain, Surface^ destinationSurface );\r
-\r
-                       /// <summary>\r
-                       /// Copies the render-target data from device memory to system memory.\r
-                       /// </summary>\r
-                       /// <param name="renderTarget">A surface representing the render target.</param>\r
-                       /// <param name="destinationSurface">The surface which will receive the copy of the render target.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetRenderTargetData</unmanaged>\r
-                       Result GetRenderTargetData( Surface^ renderTarget, Surface^ destinationSurface );\r
-\r
-                       /// <summary>\r
-                       /// Sets a single device render-state parameter.\r
-                       /// </summary>\r
-                       /// <param name="state">The render state that is being modified.</param>\r
-                       /// <param name="value">The new value for the state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetRenderState</unmanaged>\r
-                       Result SetRenderState( RenderState state, int value );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a single device render-state parameter.\r
-                       /// </summary>\r
-                       /// <param name="state">The render state that is being modified.</param>\r
-                       /// <param name="value">The new value for the state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetRenderState</unmanaged>\r
-                       Result SetRenderState( RenderState state, bool value );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a single device render-state parameter.\r
-                       /// </summary>\r
-                       /// <param name="state">The render state that is being modified.</param>\r
-                       /// <param name="value">The new value for the state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetRenderState</unmanaged>\r
-                       Result SetRenderState( RenderState state, float value );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a single device render-state parameter.\r
-                       /// </summary>\r
-                       /// <typeparam name="T">The type of the render state value.</typeparam>\r
-                       /// <param name="state">The render state that is being modified.</param>\r
-                       /// <param name="value">The new value for the state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetRenderState</unmanaged>\r
-                       generic<typename T> where T : System::Enum\r
-                               Result SetRenderState( RenderState state, T value );\r
-\r
-                       /// <summary>\r
-                       /// Gets the individual color elements of the specified palette.\r
-                       /// </summary>\r
-                       /// <param name="paletteNumber">The palette whose color elements will be retrieved.</param>\r
-                       /// <returns>The individual color elements of the specified palette.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetPaletteEntries</unmanaged>\r
-                       array<PaletteEntry>^ GetPaletteEntries( int paletteNumber );\r
-\r
-                       /// <summary>\r
-                       /// Sets palette entries.\r
-                       /// </summary>\r
-                       /// <param name="paletteNumber">An ordinal number identifying the particular palette upon which the operation is to be performed.</param>\r
-                       /// <param name="entries">The individual entries of the palette that are to be set. The length of the array is assumed to be 256.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetPaletteEntries</unmanaged>\r
-                       Result SetPaletteEntries( int paletteNumber, array<PaletteEntry>^ entries );\r
-\r
-                       /// <summary>\r
-                       /// Retrives the gamma correction ramp for the specified swap chain.\r
-                       /// </summary>\r
-                       /// <param name="swapChain">The swap chain whose gamma ramp is to be retrieved.</param>\r
-                       /// <returns>The requested gamma correction ramp.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetGammaRamp</unmanaged>\r
-                       GammaRamp^ GetGammaRamp( int swapChain );\r
-\r
-                       /// <summary>\r
-                       /// Sets the gamma correction ramp for the specified swap chain.\r
-                       /// </summary>\r
-                       /// <param name="swapChain">The swap chain whose gamma ramp is to be set.</param>\r
-                       /// <param name="ramp">The gamma correction ramp.</param>\r
-                       /// <param name="calibrate"><c>true</c> to calibrate the gamma data, <c>false</c> to just submit it to the device.</param>\r
-                       /// <unmanaged>IDirect3DDevice9::SetGammaRamp</unmanaged>\r
-                       void SetGammaRamp( int swapChain, GammaRamp^ ramp, bool calibrate );\r
-\r
-                       /// <summary>\r
-                       /// Sets the state value for the currently assigned texture.\r
-                       /// </summary>\r
-                       /// <param name="stage">Zero-based stage identifier for the texture. Devices can have up to eight textures, so the maximum value allowed is 7.</param>\r
-                       /// <param name="type">The texture state to set.</param>\r
-                       /// <param name="value">The new value for the state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetTextureStageState</unmanaged>\r
-                       Result SetTextureStageState( int stage, TextureStage type, int value );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets the state value for the currently assigned texture.\r
-                       /// </summary>\r
-                       /// <param name="stage">Zero-based stage identifier for the texture. Devices can have up to eight textures, so the maximum value allowed is 7.</param>\r
-                       /// <param name="type">The texture state to set.</param>\r
-                       /// <param name="textureOperation">The new value for the state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetTextureStageState</unmanaged>\r
-                       Result SetTextureStageState( int stage, TextureStage type, TextureOperation textureOperation );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets the state value for the currently assigned texture.\r
-                       /// </summary>\r
-                       /// <param name="stage">Zero-based stage identifier for the texture. Devices can have up to eight textures, so the maximum value allowed is 7.</param>\r
-                       /// <param name="type">The texture state to set.</param>\r
-                       /// <param name="textureArgument">The new value for the state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetTextureStageState</unmanaged>\r
-                       Result SetTextureStageState( int stage, TextureStage type, TextureArgument textureArgument );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets the state value for the currently assigned texture.\r
-                       /// </summary>\r
-                       /// <param name="stage">Zero-based stage identifier for the texture. Devices can have up to eight textures, so the maximum value allowed is 7.</param>\r
-                       /// <param name="type">The texture state to set.</param>\r
-                       /// <param name="textureTransform">The new value for the state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetTextureStageState</unmanaged>\r
-                       Result SetTextureStageState( int stage, TextureStage type, TextureTransform textureTransform );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets the state value for the currently assigned texture.\r
-                       /// </summary>\r
-                       /// <param name="stage">Zero-based stage identifier for the texture. Devices can have up to eight textures, so the maximum value allowed is 7.</param>\r
-                       /// <param name="type">The texture state to set.</param>\r
-                       /// <param name="value">The new value for the state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetTextureStageState</unmanaged>\r
-                       Result SetTextureStageState( int stage, TextureStage type, float value );\r
-\r
-                       /// <summary>\r
-                       /// Sets a sampler state's value.\r
-                       /// </summary>\r
-                       /// <param name="sampler">The sampler stage index.</param>\r
-                       /// <param name="type">The sampler state whose value is to be set.</param>\r
-                       /// <param name="value">The new value for the sampler state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetSamplerState</unmanaged>\r
-                       Result SetSamplerState( int sampler, SamplerState type, int value );\r
-\r
-                       /// <summary>\r
-                       /// Sets a sampler state's value.\r
-                       /// </summary>\r
-                       /// <param name="sampler">The sampler stage index.</param>\r
-                       /// <param name="type">The sampler state whose value is to be set.</param>\r
-                       /// <param name="value">The new value for the sampler state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetSamplerState</unmanaged>\r
-                       Result SetSamplerState( int sampler, SamplerState type, float value );\r
-\r
-                       /// <summary>\r
-                       /// Sets a sampler state's value.\r
-                       /// </summary>\r
-                       /// <param name="sampler">The sampler stage index.</param>\r
-                       /// <param name="type">The sampler state whose value is to be set.</param>\r
-                       /// <param name="textureAddress">The new value for the sampler state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetSamplerState</unmanaged>\r
-                       Result SetSamplerState( int sampler, SamplerState type, TextureAddress textureAddress );\r
-\r
-                       /// <summary>\r
-                       /// Sets a sampler state's value.\r
-                       /// </summary>\r
-                       /// <param name="sampler">The sampler stage index.</param>\r
-                       /// <param name="type">The sampler state whose value is to be set.</param>\r
-                       /// <param name="textureFilter">The new value for the sampler state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetSamplerState</unmanaged>\r
-                       Result SetSamplerState( int sampler, SamplerState type, TextureFilter textureFilter );\r
-\r
-                       /// <summary>\r
-                       /// Enables or disables a set of lighting parameters.\r
-                       /// </summary>\r
-                       /// <param name="lightIndex">The index of the light whose state is to be changed.</param>\r
-                       /// <param name="enable"><c>true</c> if the light should be enabled; otherwise, <c>false</c>.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::EnableLight</unmanaged>\r
-                       Result EnableLight( int lightIndex, bool enable );\r
-\r
-                       /// <summary>\r
-                       /// Gets a value indicating whether the specified light is enabled.\r
-                       /// </summary>\r
-                       /// <param name="lightIndex">The index of the light whose status is to be queried.</param>\r
-                       /// <returns><c>true</c> if the specified light is enabled; otherwise, <c>false</c>.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::IsLightEnabled</unmanaged>\r
-                       bool IsLightEnabled( int lightIndex );\r
-\r
-                       /// <summary>\r
-                       /// Assigns a set of lighting properties to the device.\r
-                       /// </summary>\r
-                       /// <param name="lightIndex">Index of the light whose properties are to be set.</param>\r
-                       /// <param name="lightData">A <see cref="Light"/> structure which represents the light properties.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetLight</unmanaged>\r
-                       Result SetLight( int lightIndex, Light lightData );\r
-\r
-                       /// <summary>\r
-                       /// Retrievs a set of lighting properties that are used by the device.\r
-                       /// </summary>\r
-                       /// <param name="lightIndex">Index of the light to be retrieved.</param>\r
-                       /// <returns>A <see cref="Light"/> structure describing the requested light.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetLight</unmanaged>\r
-                       Light GetLight( int lightIndex );\r
-\r
-                       /// <summary>\r
-                       /// Sets a Windows Forms cursor as the device cursor.\r
-                       /// </summary>\r
-                       /// <param name="cursor">The cursor to set.</param>\r
-                       /// <param name="addWatermark"><c>true</c> to add a watermark to the cursor; otherwise, <c>false</c>.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetCursor</unmanaged>\r
-                       Result SetCursor( System::Windows::Forms::Cursor^ cursor, bool addWatermark );\r
-\r
-                       /// <summary>\r
-                       /// Sets the current cursor position.\r
-                       /// </summary>\r
-                       /// <param name="x">The new X-position of the cursor, in virtual desktop coordinates.</param>\r
-                       /// <param name="y">The new Y-position of the cursor, in virtual desktop coordinates.</param>\r
-                       /// <param name="immediateUpdate"><c>true</c> to force the cursor to update every time the monitor refreshes; otherwise, <c>false</c> to have the cursor update whenever <see cref="Device::Present()"/> is called.</param>\r
-                       /// <unmanaged>IDirect3DDevice9::SetCursorPosition</unmanaged>\r
-                       void SetCursorPosition( int x, int y, bool immediateUpdate );\r
-\r
-                       /// <summary>\r
-                       /// Sets the current cursor position.\r
-                       /// </summary>\r
-                       /// <param name="position">The position of the cursor, in virtual desktop coordinates.</param>\r
-                       /// <param name="immediateUpdate"><c>true</c> to force the cursor to update every time the monitor refreshes; otherwise, <c>false</c> to have the cursor update whenever <see cref="Device::Present()"/> is called.</param>\r
-                       /// <unmanaged>IDirect3DDevice9::SetCursorPosition</unmanaged>\r
-                       void SetCursorPosition( System::Drawing::Point position, bool immediateUpdate ) { SetCursorPosition( position.X, position.Y, immediateUpdate ); }\r
-                       \r
-                       /// <summary>\r
-                       /// Sets properties for the cursor.\r
-                       /// </summary>\r
-                       /// <param name="hotspotX">X-coordinate offset (in pixels) that marks the center of the cursor.</param>\r
-                       /// <param name="hotspotY">Y-coordinate offset (in pixels) that marks the center of the cursor.</param>\r
-                       /// <param name="cursorBitmap">The image data used to draw the cursor.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetCursorProperties</unmanaged>\r
-                       Result SetCursorProperties( int hotspotX, int hotspotY, Surface^ cursorBitmap );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets properties for the cursor.\r
-                       /// </summary>\r
-                       /// <param name="hotspot">The offset (in pixels) that marks the center of the cursor.</param>\r
-                       /// <param name="cursorBitmap">The image data used to draw the cursor.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetCursorProperties</unmanaged>\r
-                       Result SetCursorProperties( System::Drawing::Point hotspot, Surface^ cursorBitmap ) { return SetCursorProperties( hotspot.X, hotspot.Y, cursorBitmap ); }\r
-\r
-                       /// <summary>\r
-                       /// Sets a single device transformation state.\r
-                       /// </summary>\r
-                       /// <param name="state">The transformation state which is to be set.</param>\r
-                       /// <param name="value">The new value for the transformation state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetTransform</unmanaged>\r
-                       Result SetTransform( TransformState state, Matrix* value );\r
-\r
-                       /// <summary>\r
-                       /// Sets a single device transformation state.\r
-                       /// </summary>\r
-                       /// <param name="state">The transformation state which is to be set.</param>\r
-                       /// <param name="value">The new value for the transformation state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetTransform</unmanaged>\r
-                       Result SetTransform( TransformState state, Matrix value );\r
-\r
-                       /// <summary>\r
-                       /// Sets a single device transformation state.\r
-                       /// </summary>\r
-                       /// <param name="index">The transformation state which is to be set.</param>\r
-                       /// <param name="value">The new value for the transformation state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetTransform</unmanaged>\r
-                       Result SetTransform( int index, Matrix* value );\r
-\r
-                       /// <summary>\r
-                       /// Sets a single device transformation state.\r
-                       /// </summary>\r
-                       /// <param name="index">The transformation state which is to be set.</param>\r
-                       /// <param name="value">The new value for the transformation state.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetTransform</unmanaged>\r
-                       Result SetTransform( int index, Matrix value );\r
-\r
-                       /// <summary>\r
-                       /// Retrieves a matrix describing the transformation state.\r
-                       /// </summary>\r
-                       /// <param name="state">The device state variable that is being retrieved.</param>\r
-                       /// <returns>The transformation matrix for the specified state.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetTransform</unmanaged>\r
-                       Matrix GetTransform( TransformState state );\r
-\r
-                       /// <summary>\r
-                       /// Retrieves a matrix describing the transformation state.\r
-                       /// </summary>\r
-                       /// <param name="index">The device state variable that is being retrieved.</param>\r
-                       /// <returns>The transformation matrix for the specified state.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetTransform</unmanaged>\r
-                       Matrix GetTransform( int index );\r
-                       \r
-                       /// <summary>\r
-                       /// Multiplies a device's world, view, or projection matrix by the specified matrix.\r
-                       /// </summary>\r
-                       /// <param name="state">The transformation state whose matrix is to be modified.</param>\r
-                       /// <param name="value">The matrix to multiply with the device transform.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::MultiplyTransform</unmanaged>\r
-                       Result MultiplyTransform( TransformState state, Matrix value );\r
-\r
-                       /// <summary>\r
-                       /// Binds a vertex buffer to a device data stream.\r
-                       /// </summary>\r
-                       /// <param name="stream">The stream index to bind.</param>\r
-                       /// <param name="streamData">The stream data to bind.</param>\r
-                       /// <param name="offsetInBytes">Offset from the beginning of the stream to the beginning of the vertex data, in bytes.</param>\r
-                       /// <param name="stride">The stride of the vertex data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetStreamSource</unmanaged>\r
-                       Result SetStreamSource( int stream, VertexBuffer^ streamData, int offsetInBytes, int stride );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets the stream source frequency divider value. This may be used to draw several instances of geometry.\r
-                       /// </summary>\r
-                       /// <param name="stream">The stream index.</param>\r
-                       /// <param name="frequency">The new frequency divider.</param>\r
-                       /// <param name="source">The type of data being set.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetStreamSourceFreq</unmanaged>\r
-                       Result SetStreamSourceFrequency( int stream, int frequency, StreamSource source );\r
-                       \r
-                       /// <summary>\r
-                       /// Resets the stream source frequency divider to its initial state.\r
-                       /// </summary>\r
-                       /// <param name="stream">The stream index.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetStreamSourceFreq</unmanaged>\r
-                       Result ResetStreamSourceFrequency( int stream );\r
-                       \r
-                       /// <summary>\r
-                       /// Assigns a texture to a stage.\r
-                       /// </summary>\r
-                       /// <param name="sampler">Zero-based sampler index.</param>\r
-                       /// <param name="texture">The texture that is to be bound.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetTexture</unmanaged>\r
-                       Result SetTexture( int sampler, BaseTexture^ texture );\r
-\r
-                       /// <summary>\r
-                       /// Sets a new render target for the device.\r
-                       /// </summary>\r
-                       /// <param name="targetIndex">Index of the render target.</param>\r
-                       /// <param name="target">The new render target.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetRenderTarget</unmanaged>\r
-                       Result SetRenderTarget( int targetIndex, Surface^ target );\r
-\r
-                       /// <summary>\r
-                       /// This method allows the use of GDI dialog boxes in full-screen mode applications.\r
-                       /// </summary>\r
-                       /// <param name="enableDialogs"><c>true</c> to enable GDI dialogs, <c>false</c> to disable them.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetDialogBoxMode</unmanaged>\r
-                       Result SetDialogBoxMode( bool enableDialogs );\r
-\r
-                       /// <summary>\r
-                       /// Sets the current user-defined clip plane.\r
-                       /// </summary>\r
-                       /// <param name="index">The index of the clipping plane to set.</param>\r
-                       /// <param name="clipPlane">The new clipping plane data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetClipPlane</unmanaged>\r
-                       Result SetClipPlane( int index, Plane clipPlane );\r
-\r
-                       /// <summary>\r
-                       /// Gets a boolean vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">The register number containing the first constant value.</param>\r
-                       /// <param name="count">Number of values in the constant.</param>\r
-                       /// <returns>An array of boolean constants.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetVertexShaderConstantB</unmanaged>\r
-                       array<bool>^ GetVertexShaderBooleanConstant( int startRegister, int count );\r
-\r
-                       /// <summary>\r
-                       /// Gets a floating point vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">The register number containing the first constant value.</param>\r
-                       /// <param name="count">Number of values in the constant.</param>\r
-                       /// <returns>An array of floating point constants.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetVertexShaderConstantF</unmanaged>\r
-                       array<float>^ GetVertexShaderFloatConstant( int startRegister, int count );\r
-\r
-                       /// <summary>\r
-                       /// Gets an integer vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">The register number containing the first constant value.</param>\r
-                       /// <param name="count">Number of values in the constant.</param>\r
-                       /// <returns>An array of integer constants.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetVertexShaderConstantI</unmanaged>\r
-                       array<int>^ GetVertexShaderIntegerConstant( int startRegister, int count );\r
-\r
-                       /// <summary>\r
-                       /// Gets a boolean pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">The register number containing the first constant value.</param>\r
-                       /// <param name="count">Number of values in the constant.</param>\r
-                       /// <returns>An array of boolean constants.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetPixelShaderConstantB</unmanaged>\r
-                       array<bool>^ GetPixelShaderBooleanConstant( int startRegister, int count );\r
-\r
-                       /// <summary>\r
-                       /// Gets a floating point pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">The register number containing the first constant value.</param>\r
-                       /// <param name="count">Number of values in the constant.</param>\r
-                       /// <returns>An array of floating point constants.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetPixelShaderConstantF</unmanaged>\r
-                       array<float>^ GetPixelShaderFloatConstant( int startRegister, int count );\r
-\r
-                       /// <summary>\r
-                       /// Gets an integer pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">The register number containing the first constant value.</param>\r
-                       /// <param name="count">Number of values in the constant.</param>\r
-                       /// <returns>An array of integer constants.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::GetPixelShaderConstantI</unmanaged>\r
-                       array<int>^ GetPixelShaderIntegerConstant( int startRegister, int count );\r
-\r
-                       /// <summary>\r
-                       /// Sets a vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <param name="offset">The offset into the data where constants will start being retrieved.</param>\r
-                       /// <param name="count">The number of constants to set.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetVertexShaderConstantB</unmanaged>\r
-                       Result SetVertexShaderConstant( int startRegister, array<bool>^ data, int offset, int count );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <param name="offset">The offset into the data where constants will start being retrieved.</param>\r
-                       /// <param name="count">The number of four constant vectors to set.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetVertexShaderConstantF</unmanaged>\r
-                       Result SetVertexShaderConstant( int startRegister, array<float>^ data, int offset, int count );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <param name="offset">The offset into the data where constants will start being retrieved.</param>\r
-                       /// <param name="count">The number of four constant vectors to set.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetVertexShaderConstantF</unmanaged>\r
-                       Result SetVertexShaderConstant( int startRegister, array<Vector4>^ data, int offset, int count );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <param name="offset">The offset into the data where constants will start being retrieved.</param>\r
-                       /// <param name="count">The number of four constant vectors to set.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetVertexShaderConstantI</unmanaged>\r
-                       Result SetVertexShaderConstant( int startRegister, array<int>^ data, int offset, int count );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetVertexShaderConstantB</unmanaged>\r
-                       Result SetVertexShaderConstant( int startRegister, array<bool>^ data ) { return SetVertexShaderConstant( startRegister, data, 0, data->Length ); }\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetVertexShaderConstantF</unmanaged>\r
-                       Result SetVertexShaderConstant( int startRegister, array<float>^ data ) { return SetVertexShaderConstant( startRegister, data, 0, data->Length / 4 ); }\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetVertexShaderConstantF</unmanaged>\r
-                       Result SetVertexShaderConstant( int startRegister, array<Vector4>^ data ) { return SetVertexShaderConstant( startRegister, data, 0, data->Length ); }\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetVertexShaderConstantI</unmanaged>\r
-                       Result SetVertexShaderConstant( int startRegister, array<int>^ data ) { return SetVertexShaderConstant( startRegister, data, 0, data->Length / 4 ); }\r
-\r
-                       /// <summary>\r
-                       /// Sets a vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetVertexShaderConstantF</unmanaged>\r
-                       Result SetVertexShaderConstant( int startRegister, Matrix data );\r
-\r
-                       /// <summary>\r
-                       /// Sets a vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">A pointer to the constant data.</param>\r
-                       /// <param name="count">The number of matrices to set.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetVertexShaderConstantF</unmanaged>\r
-                       Result SetVertexShaderConstant( int startRegister, Matrix* data, int count );\r
-\r
-                       /// <summary>\r
-                       /// Sets a vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">A pointer to the constant data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetVertexShaderConstantF</unmanaged>\r
-                       Result SetVertexShaderConstant( int startRegister, Matrix* data ) { return SetVertexShaderConstant( startRegister, data, 1 ); }\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <param name="offset">The offset into the data where constants will start being retrieved.</param>\r
-                       /// <param name="count">The number of four constant vectors to set.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetVertexShaderConstantF</unmanaged>\r
-                       Result SetVertexShaderConstant( int startRegister, array<Matrix>^ data, int offset, int count );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetVertexShaderConstantF</unmanaged>\r
-                       Result SetVertexShaderConstant( int startRegister, array<Matrix>^ data ) { return SetVertexShaderConstant( startRegister, data, 0, data->Length ); }\r
-\r
-                       /// <summary>\r
-                       /// Sets a pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <param name="offset">The offset into the data where constants will start being retrieved.</param>\r
-                       /// <param name="count">The number of constants to set.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetPixelShaderConstantB</unmanaged>\r
-                       Result SetPixelShaderConstant( int startRegister, array<bool>^ data, int offset, int count );\r
-\r
-                       /// <summary>\r
-                       /// Sets a pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <param name="offset">The offset into the data where constants will start being retrieved.</param>\r
-                       /// <param name="count">The number of four constant vectors to set.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetPixelShaderConstantF</unmanaged>\r
-                       Result SetPixelShaderConstant( int startRegister, array<float>^ data, int offset, int count );\r
-\r
-                       /// <summary>\r
-                       /// Sets a pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <param name="offset">The offset into the data where constants will start being retrieved.</param>\r
-                       /// <param name="count">The number of four constant vectors to set.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetPixelShaderConstantF</unmanaged>\r
-                       Result SetPixelShaderConstant( int startRegister, array<Vector4>^ data, int offset, int count );\r
-\r
-                       /// <summary>\r
-                       /// Sets a pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <param name="offset">The offset into the data where constants will start being retrieved.</param>\r
-                       /// <param name="count">The number of four constant vectors to set.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetPixelShaderConstantI</unmanaged>\r
-                       Result SetPixelShaderConstant( int startRegister, array<int>^ data, int offset, int count );\r
-\r
-                       /// <summary>\r
-                       /// Sets a pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetPixelShaderConstantB</unmanaged>\r
-                       Result SetPixelShaderConstant( int startRegister, array<bool>^ data ) { return SetPixelShaderConstant( startRegister, data, 0, data->Length ); }\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetPixelShaderConstantF</unmanaged>\r
-                       Result SetPixelShaderConstant( int startRegister, array<float>^ data ) { return SetPixelShaderConstant( startRegister, data, 0, data->Length / 4 ); }\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetPixelShaderConstantF</unmanaged>\r
-                       Result SetPixelShaderConstant( int startRegister, array<Vector4>^ data ) { return SetPixelShaderConstant( startRegister, data, 0, data->Length ); }\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetPixelShaderConstantI</unmanaged>\r
-                       Result SetPixelShaderConstant( int startRegister, array<int>^ data ) { return SetPixelShaderConstant( startRegister, data, 0, data->Length / 4 ); }\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetPixelShaderConstantF</unmanaged>\r
-                       Result SetPixelShaderConstant( int startRegister, Matrix data );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <param name="count">The number of matrices to set.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetPixelShaderConstantF</unmanaged>\r
-                       Result SetPixelShaderConstant( int startRegister, Matrix* data, int count );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetPixelShaderConstantF</unmanaged>\r
-                       Result SetPixelShaderConstant( int startRegister, Matrix* data ) { return SetPixelShaderConstant( startRegister, data, 1 ); }\r
-\r
-                       /// <summary>\r
-                       /// Sets a pixel shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <param name="offset">The offset into the data where constants will start being retrieved.</param>\r
-                       /// <param name="count">The number of four constant vectors to set.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetPixelShaderConstantF</unmanaged>\r
-                       Result SetPixelShaderConstant( int startRegister, array<Matrix>^ data, int offset, int count );\r
-                       \r
-                       /// <summary>\r
-                       /// Sets a vertex shader constant.\r
-                       /// </summary>\r
-                       /// <param name="startRegister">Register number that will contain the first constant value.</param>\r
-                       /// <param name="data">The constant data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::SetPixelShaderConstantF</unmanaged>\r
-                       Result SetPixelShaderConstant( int startRegister, array<Matrix>^ data ) { return SetVertexShaderConstant( startRegister, data, 0, data->Length ); }\r
-\r
-                       /// <summary>\r
-                       /// Signals Direct3D to begin recording a device-state block.\r
-                       /// </summary>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::BeginStateBlock</unmanaged>\r
-                       Result BeginStateBlock();\r
-                       \r
-                       /// <summary>\r
-                       /// Signals Direct3D to stop recording a device-state block.\r
-                       /// </summary>\r
-                       /// <returns>The recorded device-state block.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::EndStateBlock</unmanaged>\r
-                       StateBlock^ EndStateBlock();\r
-\r
-                       /// <summary>\r
-                       /// Applies the vertex processing defined by the vertex shader to the set of input data streams,\r
-                       /// generating a single stream of interleaved vertex data to the destination vertex buffer.\r
-                       /// </summary>\r
-                       /// <param name="sourceStartIndex">Index of the first vertex to load.</param>\r
-                       /// <param name="destinationIndex">Index of the first vertex in the destination vertex buffer into which the results are placed.</param>\r
-                       /// <param name="vertexCount">Number of vertices to process.</param>\r
-                       /// <param name="destinationBuffer">The destination for the output vertex stream.</param>\r
-                       /// <param name="vertexDeclaration">The output vertex declaration.</param>\r
-                       /// <param name="flags">Vertex processing options.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::ProcessVertices</unmanaged>\r
-                       Result ProcessVertices( int sourceStartIndex, int destinationIndex, int vertexCount, VertexBuffer^ destinationBuffer, SlimDX::Direct3D9::VertexDeclaration^ vertexDeclaration, LockFlags flags );\r
-\r
-                       /// <summary>\r
-                       /// Renders non-indexed geometric primitives using data from the current input streams.\r
-                       /// </summary>\r
-                       /// <param name="primitiveType">Specifies the type of primitive to render.</param>\r
-                       /// <param name="startIndex">Index of the first vertex to use.</param>\r
-                       /// <param name="primitiveCount">The number of primitives to render. The number of vertices used is a function of the primitive count and the primitive type.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::DrawPrimitive</unmanaged>\r
-                       Result DrawPrimitives( PrimitiveType primitiveType, int startIndex, int primitiveCount );\r
-                       \r
-                       /// <summary>\r
-                       /// Renders the specified geometric primitive using data from the current input streams.\r
-                       /// </summary>\r
-                       /// <param name="primitiveType">Specifies the type of primitive to render.</param>\r
-                       /// <param name="baseVertexIndex">Offset from the start of the vertex buffer to the first vertex.</param>\r
-                       /// <param name="minimumVertexIndex">Minimum vertex index for vertices used during this call. This is a zero-based index relative to <paramref name="baseVertexIndex" />.</param>\r
-                       /// <param name="vertexCount">The number of vertices to render.</param>\r
-                       /// <param name="startIndex">Index of the first index to use when accessing the vertex buffer.</param>\r
-                       /// <param name="primitiveCount">The number of primitives to render. The number of vertices used is a function of the primitive count and the primitive type.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::DrawIndexedPrimitive</unmanaged>\r
-                       Result DrawIndexedPrimitives( PrimitiveType primitiveType, int baseVertexIndex, int minimumVertexIndex, int vertexCount, int startIndex, int primitiveCount );\r
-                       \r
-                       /// <summary>\r
-                       /// Renders non-indexed geometric primitives using user-supplied data.\r
-                       /// </summary>\r
-                       /// <typeparam name="T">The type of the user-supplied vertices.</typeparam>\r
-                       /// <param name="primitiveType">Specifies the type of primitive to render.</param>\r
-                       /// <param name="primitiveCount">The number of primitives to render. The number of vertices used is a function of the primitive count and the primitive type.</param>\r
-                       /// <param name="data">User-supplied vertex data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::DrawPrimitiveUP</unmanaged>\r
-                       generic<typename T> where T : value class\r
-                       Result DrawUserPrimitives( PrimitiveType primitiveType, int primitiveCount, array<T>^ data );\r
-                       \r
-                       /// <summary>\r
-                       /// Renders non-indexed geometric primitives using user-supplied data.\r
-                       /// </summary>\r
-                       /// <typeparam name="T">The type of the user-supplied vertices.</typeparam>\r
-                       /// <param name="primitiveType">Specifies the type of primitive to render.</param>\r
-                       /// <param name="startIndex">Index of the first vertex in the array to use.</param>\r
-                       /// <param name="primitiveCount">The number of primitives to render. The number of vertices used is a function of the primitive count and the primitive type.</param>\r
-                       /// <param name="data">User-supplied vertex data.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::DrawPrimitiveUP</unmanaged>\r
-                       generic<typename T> where T : value class\r
-                       Result DrawUserPrimitives( PrimitiveType primitiveType, int startIndex, int primitiveCount, array<T>^ data );\r
-\r
-                       /// <summary>\r
-                       /// Renders the specified geometric primitive using user-supplied data.\r
-                       /// </summary>\r
-                       /// <typeparam name="S">The type of the data contained in the index data.</typeparam>\r
-                       /// <typeparam name="T">The type of the data contained in the vertex data.</typeparam>\r
-                       /// <param name="primitiveType">Specifies the type of primitive to render.</param>\r
-                       /// <param name="minimumVertexIndex">Minimum vertex index for vertices used during this call.</param>\r
-                       /// <param name="vertexCount">The number of vertices to render.</param>\r
-                       /// <param name="primitiveCount">The number of primitives to render. The number of vertices used is a function of the primitive count and the primitive type.</param>\r
-                       /// <param name="indexData">User-supplied index data.</param>\r
-                       /// <param name="indexDataFormat">The format of the supplied index data.</param>\r
-                       /// <param name="vertexData">User-supplied vertex data.</param>\r
-                       /// <param name="vertexStride">The number of bytes of data for each vertex.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::DrawIndexedPrimitiveUP</unmanaged>\r
-                       generic<typename S, typename T> where S : value class where T : value class\r
-                       Result DrawIndexedUserPrimitives( PrimitiveType primitiveType, int minimumVertexIndex, int vertexCount, int primitiveCount, array<S>^ indexData, Format indexDataFormat, array<T>^ vertexData, int vertexStride );\r
-                       \r
-                       /// <summary>\r
-                       /// Renders the specified geometric primitive using user-supplied data.\r
-                       /// </summary>\r
-                       /// <typeparam name="S">The type of the data contained in the index data.</typeparam>\r
-                       /// <typeparam name="T">The type of the data contained in the vertex data.</typeparam>\r
-                       /// <param name="primitiveType">Specifies the type of primitive to render.</param>\r
-                       /// <param name="startIndex">Index of the first index in the array to use.</param>\r
-                       /// <param name="minimumVertexIndex">Minimum vertex index for vertices used during this call.</param>\r
-                       /// <param name="vertexCount">The number of vertices to render.</param>\r
-                       /// <param name="primitiveCount">The number of primitives to render. The number of vertices used is a function of the primitive count and the primitive type.</param>\r
-                       /// <param name="indexData">User-supplied index data.</param>\r
-                       /// <param name="indexDataFormat">The format of the supplied index data.</param>\r
-                       /// <param name="vertexData">User-supplied vertex data.</param>\r
-                       /// <param name="vertexStride">The number of bytes of data for each vertex.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::DrawIndexedPrimitiveUP</unmanaged>\r
-                       generic<typename S, typename T> where S : value class where T : value class\r
-                       Result DrawIndexedUserPrimitives( PrimitiveType primitiveType, int startIndex, int minimumVertexIndex, int vertexCount, int primitiveCount, array<S>^ indexData, Format indexDataFormat, array<T>^ vertexData, int vertexStride );\r
-\r
-                       /// <summary>\r
-                       /// Renders the specified geometric primitive using user-supplied data.\r
-                       /// </summary>\r
-                       /// <typeparam name="S">The type of the data contained in the index data.</typeparam>\r
-                       /// <typeparam name="T">The type of the data contained in the vertex data.</typeparam>\r
-                       /// <param name="primitiveType">Specifies the type of primitive to render.</param>\r
-                       /// <param name="startIndex">Index of the first index in the array to use.</param>\r
-                       /// <param name="startVertex">Index of the first vertex in the array to use.</param>\r
-                       /// <param name="minimumVertexIndex">Minimum vertex index for vertices used during this call.</param>\r
-                       /// <param name="vertexCount">The number of vertices to render.</param>\r
-                       /// <param name="primitiveCount">The number of primitives to render. The number of vertices used is a function of the primitive count and the primitive type.</param>\r
-                       /// <param name="indexData">User-supplied index data.</param>\r
-                       /// <param name="indexDataFormat">The format of the supplied index data.</param>\r
-                       /// <param name="vertexData">User-supplied vertex data.</param>\r
-                       /// <param name="vertexStride">The number of bytes of data for each vertex.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::DrawIndexedPrimitiveUP</unmanaged>\r
-                       generic<typename S, typename T> where S : value class where T : value class\r
-                       Result DrawIndexedUserPrimitives( PrimitiveType primitiveType, int startIndex, int startVertex, int minimumVertexIndex, int vertexCount, int primitiveCount, array<S>^ indexData, Format indexDataFormat, array<T>^ vertexData, int vertexStride );\r
-                       \r
-                       /// <summary>\r
-                       /// Draws a triangular patch using the currently set streams.\r
-                       /// </summary>\r
-                       /// <param name="handle">Handle to the triangular patch to draw.</param>\r
-                       /// <param name="segmentCounts">An array of three floating point values that identify the number of segments on each edge of the triangular patch.</param>\r
-                       /// <param name="info">Information on how to draw the triangular patch.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::DrawTriPatch</unmanaged>\r
-                       Result DrawTrianglePatch( int handle, array<float>^ segmentCounts, TrianglePatchInfo info );\r
-                       \r
-                       /// <summary>\r
-                       /// Draws a triangular patch using the currently set streams.\r
-                       /// </summary>\r
-                       /// <param name="handle">Handle to the triangular patch to draw.</param>\r
-                       /// <param name="segmentCounts">An array of three floating point values that identify the number of segments on each edge of the triangular patch.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::DrawTriPatch</unmanaged>\r
-                       Result DrawTrianglePatch( int handle, array<float>^ segmentCounts );\r
-                       \r
-                       /// <summary>\r
-                       /// Draws a rectangular patch using the currently set streams.\r
-                       /// </summary>\r
-                       /// <param name="handle">Handle to the rectangular patch to draw.</param>\r
-                       /// <param name="segmentCounts">An array of four floating point values that identify the number of segments on each edge of the rectangular patch.</param>\r
-                       /// <param name="info">Information on how to draw the rectangular patch.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::DrawRectPatch</unmanaged>\r
-                       Result DrawRectanglePatch( int handle, array<float>^ segmentCounts, RectanglePatchInfo info );\r
-                       \r
-                       /// <summary>\r
-                       /// Draws a rectangular patch using the currently set streams.\r
-                       /// </summary>\r
-                       /// <param name="handle">Handle to the rectangular patch to draw.</param>\r
-                       /// <param name="segmentCounts">An array of four floating point values that identify the number of segments on each edge of the rectangular patch.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::DrawRectPatch</unmanaged>\r
-                       Result DrawRectanglePatch( int handle, array<float>^ segmentCounts );\r
-                       \r
-                       /// <summary>\r
-                       /// Frees a cached high-order patch.\r
-                       /// </summary>\r
-                       /// <param name="handle">Handle of the cached high-order patch to delete.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::DeletePatch</unmanaged>\r
-                       Result DeletePatch( int handle );\r
-\r
-                       /// <summary>\r
-                       /// Copys the contents of the source surface to the destination surface.\r
-                       /// </summary>\r
-                       /// <param name="source">The source surface.</param>\r
-                       /// <param name="sourceRectangle">The area on the source surface that is to be copied.</param>\r
-                       /// <param name="destination">The destination surface.</param>\r
-                       /// <param name="destinationRectangle">The area on the destination surface where data will be copied.</param>\r
-                       /// <param name="filter">The filter that will be used when the data is being stretched.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::StretchRect</unmanaged>\r
-                       Result StretchRectangle( Surface^ source, System::Drawing::Rectangle sourceRectangle, Surface^ destination, System::Drawing::Rectangle destinationRectangle, TextureFilter filter );\r
-                       \r
-                       /// <summary>\r
-                       /// Copys the contents of the source surface to the destination surface.\r
-                       /// </summary>\r
-                       /// <param name="source">The source surface.</param>\r
-                       /// <param name="destination">The destination surface.</param>\r
-                       /// <param name="filter">The filter that will be used when the data is being stretched.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::StretchRect</unmanaged>\r
-                       Result StretchRectangle( Surface^ source, Surface^ destination, TextureFilter filter );\r
-\r
-                       /// <summary>\r
-                       /// Copies rectangular subsets of pixels from one surface to another.\r
-                       /// </summary>\r
-                       /// <param name="source">The source surface.</param>\r
-                       /// <param name="sourceRectangle">The area on the source surface that is to be copied.</param>\r
-                       /// <param name="destination">The destination surface.</param>\r
-                       /// <param name="destinationPoint">The location on the destination surface where data will be copied.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::UpdateSurface</unmanaged>\r
-                       Result UpdateSurface( Surface^ source, System::Drawing::Rectangle sourceRectangle, Surface^ destination, System::Drawing::Point destinationPoint );\r
-                       \r
-                       /// <summary>\r
-                       /// Copies rectangular subsets of pixels from one surface to another.\r
-                       /// </summary>\r
-                       /// <param name="source">The source surface.</param>\r
-                       /// <param name="destination">The destination surface.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::UpdateSurface</unmanaged>\r
-                       Result UpdateSurface( Surface^ source, Surface^ destination );\r
-\r
-                       /// <summary>\r
-                       /// Updates the dirty portions of a texture.\r
-                       /// </summary>\r
-                       /// <param name="sourceTexture">The source texture.</param>\r
-                       /// <param name="destinationTexture">The destination texture.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::UpdateTexture</unmanaged>\r
-                       Result UpdateTexture( BaseTexture^ sourceTexture, BaseTexture^ destinationTexture );\r
-                       \r
-                       /// <summary>\r
-                       /// Fills a rectangular area of a surface with the specified color.\r
-                       /// </summary>\r
-                       /// <param name="destinationSurface">The surface that will be filled.</param>\r
-                       /// <param name="destinationRectangle">The area on the surface that will be filled.</param>\r
-                       /// <param name="color">The color used for filling.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::ColorFill</unmanaged>\r
-                       Result ColorFill( Surface^ destinationSurface, System::Drawing::Rectangle destinationRectangle, Color4 color );\r
-                       \r
-                       /// <summary>\r
-                       /// Fills a rectangular area of a surface with the specified color.\r
-                       /// </summary>\r
-                       /// <param name="destinationSurface">The surface that will be filled.</param>\r
-                       /// <param name="color">The color used for filling.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <unmanaged>IDirect3DDevice9::ColorFill</unmanaged>\r
-                       Result ColorFill( Surface^ destinationSurface, Color4 color );\r
-\r
-                       /// <summary>\r
-                       /// Enables or disables render-to-vertex-buffer mode.\r
-                       /// </summary>\r
-                       /// <param name="enableR2VB"><c>true</c> to enable render-to-vertex-buffer mode, <c>false</c> to disable it.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <remarks>This functionality is only available on ATI cards which support render to vertex buffer.</remarks>\r
-                       Result SetR2VBMode( bool enableR2VB );\r
-\r
-                       /// <summary>\r
-                       /// Binds a render target to a vertex stream.\r
-                       /// </summary>\r
-                       /// <param name="sampler">The sampler that will be used to bind the render target.</param>\r
-                       /// <param name="r2vbTarget">The target of the binding operation.</param>\r
-                       /// <param name="stream">The stream index that will be bound to the texture.</param>\r
-                       /// <param name="stride">The stride of the vertex data.</param>\r
-                       /// <param name="dummyVertexBuffer">A vertex buffer that is used to fill a required parameter in <see cref="Device::SetStreamSource"/>.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <remarks>This functionality is only available on ATI cards which support render to vertex buffer.</remarks>\r
-                       Result BindRenderTargetToVertexStream( R2VBSampler sampler, Texture^ r2vbTarget, int stream, int stride, VertexBuffer^ dummyVertexBuffer );\r
-                       \r
-                       /// <summary>\r
-                       /// Unbinds a previously bound vertex buffer as a render target.\r
-                       /// </summary>\r
-                       /// <param name="stream">The vertex stream that should be unbound.</param>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       /// <remarks>This functionality is only available on ATI cards which support render to vertex buffer.</remarks>\r
-                       Result RestoreVertexStream( int stream );\r
-\r
-                       /// <summary>\r
-                       /// Gets the capabilities of the rendering device.\r
-                       /// </summary>\r
-                       property Capabilities^ Capabilities\r
-                       {\r
-                               SlimDX::Direct3D9::Capabilities^ get();\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets the parameters used to create the device.\r
-                       /// </summary>\r
-                       property CreationParameters CreationParameters\r
-                       {\r
-                               SlimDX::Direct3D9::CreationParameters get();\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets the current clip status.\r
-                       /// </summary>\r
-                       property ClipStatus ClipStatus\r
-                       {\r
-                               SlimDX::Direct3D9::ClipStatus get();\r
-                               void set( SlimDX::Direct3D9::ClipStatus value );\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets or sets the current fixed-function vertex format.\r
-                       /// </summary>\r
-                       property VertexFormat VertexFormat\r
-                       {\r
-                               SlimDX::Direct3D9::VertexFormat get();\r
-                               void set( SlimDX::Direct3D9::VertexFormat value );\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets or sets the current vertex declaration.\r
-                       /// </summary>\r
-                       /// <returns>A <see cref="SlimDX::Result"/> object describing the result of the operation.</returns>\r
-                       property SlimDX::Direct3D9::VertexDeclaration^ VertexDeclaration\r
-                       {\r
-                               SlimDX::Direct3D9::VertexDeclaration^ get();\r
-                               void set( SlimDX::Direct3D9::VertexDeclaration^ value );\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets or sets the vertex processing mode.\r
-                       /// </summary>\r
-                       /// <value><c>true</c> if the device is using software vertex processing; otherwise, <c>false</c>.</value>\r
-                       property bool SoftwareVertexProcessing\r
-                       {\r
-                               bool get();\r
-                               void set( bool value );\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets or sets the current material properties used by the device.\r
-                       /// </summary>\r
-                       property Material Material\r
-                       {\r
-                               SlimDX::Direct3D9::Material get();\r
-                               void set( SlimDX::Direct3D9::Material value );\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets or sets the currently active viewport.\r
-                       /// </summary>\r
-                       property SlimDX::Direct3D9::Viewport Viewport\r
-                       {\r
-                               SlimDX::Direct3D9::Viewport get();\r
-                               void set( SlimDX::Direct3D9::Viewport value );\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets or sets the current scissor rectangle.\r
-                       /// </summary>\r
-                       property System::Drawing::Rectangle ScissorRect\r
-                       {\r
-                               System::Drawing::Rectangle get();\r
-                               void set( System::Drawing::Rectangle value );\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets an estimate of the amount of available texture memory.\r
-                       /// </summary>\r
-                       /// <value>The amount of available texture memory, rounded to the nearest MB.</value>\r
-                       property System::Int64 AvailableTextureMemory\r
-                       {\r
-                               System::Int64 get();\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets or sets a value indicating whether the cursor should be shown.\r
-                       /// </summary>\r
-                       property bool ShowCursor\r
-                       {\r
-                               bool get();\r
-                               void set( bool show );\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets the number of implicitly created swap chains.\r
-                       /// </summary>\r
-                       property int SwapChainCount\r
-                       {\r
-                               int get();\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets or sets the current N-patch mode segments.\r
-                       /// </summary>\r
-                       /// <value>The number of subdivision segments. If the value is less than 1.0, N-patches are disabled.</value>\r
-                       property float NPatchMode\r
-                       {\r
-                               float get();\r
-                               void set( float value );\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets or sets the index of the current texture palette.\r
-                       /// </summary>\r
-                       /// <returns>An index into the list of possible texture palettes.</returns>\r
-                       property int CurrentTexturePalette\r
-                       {\r
-                               int get();\r
-                               void set( int value );\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets the current driver version.\r
-                       /// </summary>\r
-                       property DriverLevel DriverLevel\r
-                       {\r
-                               SlimDX::Direct3D9::DriverLevel get();\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets the vertex shader version.\r
-                       /// </summary>\r
-                       property System::String^ VertexShaderProfile\r
-                       {\r
-                               System::String^ get();\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets the pixel shader version.\r
-                       /// </summary>\r
-                       property System::String^ PixelShaderProfile\r
-                       {\r
-                               System::String^ get();\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets or sets the current depth-stencil surface.\r
-                       /// </summary>\r
-                       property Surface^ DepthStencilSurface\r
-                       {\r
-                               Surface^ get();\r
-                               void set( Surface^ value );\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets or sets the current index data.\r
-                       /// </summary>\r
-                       property IndexBuffer^ Indices\r
-                       {\r
-                               IndexBuffer^ get();\r
-                               void set( IndexBuffer^ value );\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets or sets the currently active vertex shader.\r
-                       /// </summary>\r
-                       property VertexShader^ VertexShader\r
-                       {\r
-                               SlimDX::Direct3D9::VertexShader^ get();\r
-                               void set( SlimDX::Direct3D9::VertexShader^ value );\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Gets or sets the currently active pixel shader.\r
-                       /// </summary>\r
-                       property PixelShader^ PixelShader\r
-                       {\r
-                               SlimDX::Direct3D9::PixelShader^ get();\r
-                               void set( SlimDX::Direct3D9::PixelShader^ value );\r
-                       }\r
-\r
-                       /// <summary>\r
-                       /// Returns the instance of the Direct3D object that created this device.\r
-                       /// </summary>\r
-                       property Direct3D^ Direct3D\r
-                       {\r
-                               SlimDX::Direct3D9::Direct3D^ get();\r
-                       }\r
-               };\r
-       }\r
-}\r