OSDN Git Service

Merge branch 'feature/#36529_SlimDXからSharpDXへの移行' into develop
[dtxmania/dtxmania.git] / SlimDXc_Jun2010(VC++2008) / source / direct3d10 / Mesh10.cpp
diff --git a/SlimDXc_Jun2010(VC++2008)/source/direct3d10/Mesh10.cpp b/SlimDXc_Jun2010(VC++2008)/source/direct3d10/Mesh10.cpp
deleted file mode 100644 (file)
index 77e4c5d..0000000
+++ /dev/null
@@ -1,271 +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
-#include "stdafx.h"\r
-#include <d3dx10.h>\r
-#include <vcclr.h>\r
-\r
-#include "../stack_array.h"\r
-\r
-#include "Direct3D10Exception.h"\r
-\r
-#include "Buffer.h"\r
-#include "Device10.h"\r
-#include "Mesh10.h"\r
-#include "MeshBuffer.h"\r
-\r
-using namespace System;\r
-using namespace System::Collections::Generic;\r
-using namespace System::Collections::ObjectModel;\r
-\r
-namespace SlimDX\r
-{\r
-namespace Direct3D10\r
-{\r
-       Mesh::Mesh( Device^ device, array<InputElement>^ elements, System::String^ positionElement, int vertexCount, int faceCount, MeshFlags flags )\r
-       {\r
-               D3D10_INPUT_ELEMENT_DESC nativeElements[D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT];\r
-               for( int i = 0; i < elements->Length; ++i )\r
-                       nativeElements[i] = elements[i].CreateNativeVersion();\r
-               \r
-               array<unsigned char>^ nameBytes = System::Text::ASCIIEncoding::ASCII->GetBytes( positionElement );\r
-               pin_ptr<unsigned char> pinnedName = &nameBytes[ 0 ];\r
-\r
-               ID3DX10Mesh* mesh = 0;\r
-               if( RECORD_D3D10( D3DX10CreateMesh( device->InternalPointer, nativeElements, elements->Length, reinterpret_cast<LPCSTR>( pinnedName ), static_cast<UINT>( vertexCount ), static_cast<UINT>( faceCount ), static_cast<UINT>( flags ), &mesh ) ).IsFailure )\r
-                       throw gcnew Direct3D10Exception( Result::Last );\r
-\r
-               Construct( mesh );\r
-       }\r
-\r
-       MeshFlags Mesh::Flags::get() \r
-       {\r
-               return static_cast<MeshFlags>( InternalPointer->GetFlags() );\r
-       }\r
-\r
-       int Mesh::FaceCount::get() \r
-       {\r
-               return InternalPointer->GetFaceCount();\r
-       }\r
-\r
-       int Mesh::VertexCount::get() \r
-       {\r
-               return InternalPointer->GetVertexCount();\r
-       }\r
-\r
-       int Mesh::VertexBufferCount::get() \r
-       {\r
-               return InternalPointer->GetVertexBufferCount();\r
-       }\r
-       \r
-       Mesh^ Mesh::Clone( array<InputElement>^ elements, System::String^ positionElement, MeshFlags flags ) \r
-       {\r
-               D3D10_INPUT_ELEMENT_DESC nativeElements[D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT];\r
-               for( int i = 0; i < elements->Length; ++i )\r
-                       nativeElements[i] = elements[i].CreateNativeVersion();\r
-               \r
-               array<unsigned char>^ nameBytes = System::Text::ASCIIEncoding::ASCII->GetBytes( positionElement );\r
-               pin_ptr<unsigned char> pinnedName = &nameBytes[ 0 ];\r
-\r
-               ID3DX10Mesh* mesh = 0;\r
-               if( RECORD_D3D10( InternalPointer->CloneMesh( static_cast<UINT>( flags ), reinterpret_cast<LPCSTR>( pinnedName ), nativeElements, elements->Length, &mesh ) ).IsFailure )\r
-                       return nullptr;\r
-               \r
-               return gcnew Mesh( mesh, nullptr );\r
-       }\r
-\r
-       Result Mesh::GenerateAdjacencyAndPointRepresentation( float epsilon )\r
-       {\r
-               return RECORD_D3D10( InternalPointer->GenerateAdjacencyAndPointReps( epsilon ) );\r
-       }\r
-\r
-       Result Mesh::GenerateAttributeBufferFromTable()\r
-       {\r
-               return RECORD_D3D10( InternalPointer->GenerateAttributeBufferFromTable() );\r
-       }\r
-\r
-       Result Mesh::GenerateGeometryShaderAdjacency()\r
-       {\r
-               return RECORD_D3D10( InternalPointer->GenerateGSAdjacency() );\r
-       }\r
-\r
-       Result Mesh::Commit()\r
-       {\r
-               return RECORD_D3D10( InternalPointer->CommitToDevice() );\r
-       }\r
-\r
-       Result Mesh::Discard( MeshDiscardFlags flags )\r
-       {\r
-               return RECORD_D3D10( InternalPointer->Discard( static_cast<D3DX10_MESH_DISCARD_FLAGS>( flags ) ) );\r
-       }\r
-\r
-       Result Mesh::DrawSubset( int id )\r
-       {\r
-               return RECORD_D3D10( InternalPointer->DrawSubset( id ) );\r
-       }\r
-\r
-       Result Mesh::DrawSubsetInstanced( int id, int count, int startLocation)\r
-       {\r
-               return RECORD_D3D10( InternalPointer->DrawSubsetInstanced( id, count, startLocation ) );\r
-       }\r
-       \r
-       MeshBuffer^ Mesh::GetIndexBuffer()\r
-       {\r
-               ID3DX10MeshBuffer* buffer = 0;\r
-               if( RECORD_D3D10( InternalPointer->GetIndexBuffer( &buffer ) ).IsFailure )\r
-                       return nullptr;\r
-               return MeshBuffer::FromPointer( buffer );\r
-       }\r
-\r
-       MeshBuffer^ Mesh::GetVertexBuffer( int index )\r
-       {\r
-               ID3DX10MeshBuffer* buffer = 0;\r
-               if( RECORD_D3D10( InternalPointer->GetVertexBuffer( index, &buffer ) ).IsFailure )\r
-                       return nullptr;\r
-               return MeshBuffer::FromPointer( buffer );\r
-       }\r
-\r
-       MeshBuffer^ Mesh::GetPointRepresentationBuffer()\r
-       {\r
-               ID3DX10MeshBuffer* buffer = 0;\r
-               if( RECORD_D3D10( InternalPointer->GetPointRepBuffer( &buffer ) ).IsFailure )\r
-                       return nullptr;\r
-               return MeshBuffer::FromPointer( buffer );\r
-       }\r
-\r
-       MeshBuffer^ Mesh::GetAdjacencyBuffer()\r
-       {\r
-               ID3DX10MeshBuffer* buffer = 0;\r
-               if( RECORD_D3D10( InternalPointer->GetAdjacencyBuffer( &buffer ) ).IsFailure )\r
-                       return nullptr;\r
-               return MeshBuffer::FromPointer( buffer );\r
-       }\r
-\r
-       MeshBuffer^ Mesh::GetAttributeBuffer()\r
-       {\r
-               ID3DX10MeshBuffer* buffer = 0;\r
-               if( RECORD_D3D10( InternalPointer->GetAttributeBuffer( &buffer ) ).IsFailure )\r
-                       return nullptr;\r
-               return MeshBuffer::FromPointer( buffer );\r
-       }\r
-       \r
-       Result Mesh::SetIndexData( DataStream^ data, int count ) \r
-       {\r
-               return RECORD_D3D10( InternalPointer->SetIndexData( data->PositionPointer, count ) );\r
-       }\r
-\r
-       Result Mesh::SetVertexData( int index, DataStream^ data ) \r
-       {\r
-               return RECORD_D3D10( InternalPointer->SetVertexData( index, data->PositionPointer ) );\r
-       }\r
-\r
-       Result Mesh::SetPointRepresentationData( DataStream^ data ) \r
-       {\r
-               return RECORD_D3D10( InternalPointer->SetPointRepData( reinterpret_cast<const UINT*>( data->PositionPointer ) ) );\r
-       }\r
-\r
-       Result Mesh::SetAdjacencyData( DataStream^ data ) \r
-       {\r
-               return RECORD_D3D10( InternalPointer->SetAdjacencyData( reinterpret_cast<const UINT*>( data->PositionPointer ) ) );\r
-       }\r
-\r
-       Result Mesh::SetAttributeData( DataStream^ data ) \r
-       {\r
-               return RECORD_D3D10( InternalPointer->SetAttributeData( reinterpret_cast<const UINT*>( data->PositionPointer ) ) );\r
-       }\r
-\r
-       Result Mesh::SetAttributeTable( array<MeshAttributeRange>^ ranges ) \r
-       {\r
-               stack_array<D3DX10_ATTRIBUTE_RANGE> nativeRanges = stackalloc( D3DX10_ATTRIBUTE_RANGE, ranges->Length );\r
-\r
-               for( int rangeIndex = 0; rangeIndex < ranges->Length; ++rangeIndex )\r
-                       nativeRanges[rangeIndex] = ranges[rangeIndex].CreateNativeVersion();\r
-\r
-               return RECORD_D3D10( InternalPointer->SetAttributeTable( &nativeRanges[0], ranges->Length ) );\r
-       }\r
-\r
-       ReadOnlyCollection<MeshAttributeRange>^ Mesh::GetAttributeTable()\r
-       {\r
-               UINT count = 0;\r
-               if( RECORD_D3D10( InternalPointer->GetAttributeTable( 0, &count ) ).IsFailure )\r
-                       return nullptr;\r
-\r
-               stack_array<D3DX10_ATTRIBUTE_RANGE> ranges = stackalloc( D3DX10_ATTRIBUTE_RANGE, count );\r
-               if( RECORD_D3D10( InternalPointer->GetAttributeTable( reinterpret_cast<D3DX10_ATTRIBUTE_RANGE*>( &ranges[0] ), &count ) ).IsFailure )\r
-                       return nullptr;\r
-               \r
-               List<MeshAttributeRange>^ list = gcnew List<MeshAttributeRange>( count );\r
-               for( UINT rangeIndex = 0; rangeIndex < count; ++rangeIndex ) \r
-                       list->Add(MeshAttributeRange( ranges[rangeIndex] ));\r
-               return gcnew ReadOnlyCollection<MeshAttributeRange>( list );\r
-       }\r
-\r
-       Buffer^ Mesh::GetDeviceIndexBuffer() \r
-       {\r
-               ID3D10Buffer* buffer = 0;\r
-               if( RECORD_D3D10( InternalPointer->GetDeviceIndexBuffer( &buffer ) ).IsFailure )\r
-                       return nullptr;\r
-               return Buffer::FromPointer( buffer );\r
-       }\r
-\r
-       Buffer^ Mesh::GetDeviceVertexBuffer( int index ) \r
-       {\r
-               ID3D10Buffer* buffer = 0;\r
-               if( RECORD_D3D10( InternalPointer->GetDeviceVertexBuffer( index, &buffer ) ).IsFailure )\r
-                       return nullptr;\r
-               return Buffer::FromPointer( buffer );\r
-       }\r
-       \r
-       Result Mesh::Optimize( MeshOptimizeFlags flags )\r
-       {\r
-               RECORD_D3D10( InternalPointer->Optimize( static_cast<UINT>( flags ), 0, 0 ) );\r
-               return Result::Last;\r
-       }\r
-       \r
-       Result Mesh::Optimize( MeshOptimizeFlags flags, [Out] array<int>^% faceRemap, [Out] array<int>^% vertexRemap )\r
-       {\r
-               stack_array<UINT> nativeFaceRemap = stackalloc( UINT, FaceCount );\r
-               ID3D10Blob* nativeVertexRemap = 0;\r
-               \r
-               if( RECORD_D3D10( InternalPointer->Optimize( static_cast<UINT>( flags ), &nativeFaceRemap[0], &nativeVertexRemap ) ).IsFailure )\r
-               {\r
-                       faceRemap = nullptr;\r
-                       vertexRemap = nullptr;\r
-               }\r
-               else \r
-               {\r
-                       faceRemap = gcnew array<int>( FaceCount );\r
-                       int size = static_cast<int>( nativeFaceRemap.size() );\r
-                       for( int faceIndex = 0; faceIndex < size; ++faceIndex )\r
-                               faceRemap[faceIndex] = static_cast<int>( nativeFaceRemap[faceIndex] );\r
-                       \r
-                       vertexRemap = gcnew array<int>( VertexCount );\r
-                       DWORD* currentVertex = reinterpret_cast<DWORD*>( nativeVertexRemap->GetBufferPointer() );\r
-                       for( int vertexIndex = 0; vertexIndex < VertexCount; ++vertexIndex )\r
-                               vertexRemap[vertexIndex] = *currentVertex++;    \r
-                       \r
-                       nativeVertexRemap->Release();\r
-               }\r
-               \r
-               return Result::Last;\r
-       }\r
-}\r
-}\r