OSDN Git Service

#36897 [DTXC] MIDIインポート機能の呼び出し口を、ファイルメニュー内にも配置。
[dtxmania/dtxmania.git] / SlimDXc_Jun2010(VC++2008) / source / direct3d11 / Buffer11.cpp
1 #include "stdafx.h"\r
2 /*\r
3 * Copyright (c) 2007-2010 SlimDX Group\r
4\r
5 * Permission is hereby granted, free of charge, to any person obtaining a copy\r
6 * of this software and associated documentation files (the "Software"), to deal\r
7 * in the Software without restriction, including without limitation the rights\r
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
9 * copies of the Software, and to permit persons to whom the Software is\r
10 * furnished to do so, subject to the following conditions:\r
11\r
12 * The above copyright notice and this permission notice shall be included in\r
13 * all copies or substantial portions of the Software.\r
14\r
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
21 * THE SOFTWARE.\r
22 */\r
23 \r
24 #include <d3d11.h>\r
25 #include <d3dx11.h>\r
26 \r
27 #include "../DataStream.h"\r
28 \r
29 #include "Direct3D11Exception.h"\r
30 \r
31 #include "Buffer11.h"\r
32 #include "BufferDescription11.h"\r
33 #include "Device11.h"\r
34 \r
35 using namespace System;\r
36 \r
37 namespace SlimDX\r
38 {\r
39 namespace Direct3D11\r
40\r
41         Buffer::Buffer( SlimDX::Direct3D11::Device^ device, BufferDescription description )\r
42         {\r
43                 Construct( Build( device, nullptr, description.SizeInBytes, description.Usage, description.BindFlags, description.CpuAccessFlags, description.OptionFlags, description.StructureByteStride ) );\r
44         }\r
45 \r
46         Buffer::Buffer( SlimDX::Direct3D11::Device^ device, DataStream^ data, BufferDescription description )\r
47         {\r
48                 Construct( Build( device, data, description.SizeInBytes, description.Usage, description.BindFlags, description.CpuAccessFlags, description.OptionFlags, description.StructureByteStride ) );\r
49         }\r
50         \r
51         Buffer::Buffer( SlimDX::Direct3D11::Device^ device, int sizeInBytes, ResourceUsage usage, SlimDX::Direct3D11::BindFlags bindFlags, CpuAccessFlags accessFlags, ResourceOptionFlags optionFlags, int structureByteStride )\r
52         {\r
53                 Construct( Build( device, nullptr, sizeInBytes, usage, bindFlags, accessFlags, optionFlags, structureByteStride ) );\r
54         }\r
55         \r
56         Buffer::Buffer( SlimDX::Direct3D11::Device^ device, DataStream^ data, int sizeInBytes, ResourceUsage usage, SlimDX::Direct3D11::BindFlags bindFlags, CpuAccessFlags accessFlags, ResourceOptionFlags optionFlags, int structureByteStride )\r
57         {               \r
58                 Construct( Build( device, data, sizeInBytes, usage, bindFlags, accessFlags, optionFlags, structureByteStride ) );\r
59         }\r
60 \r
61         ID3D11Buffer* Buffer::Build( SlimDX::Direct3D11::Device^ device, DataStream^ data, int sizeInBytes, ResourceUsage usage, SlimDX::Direct3D11::BindFlags bindFlags, CpuAccessFlags accessFlags, ResourceOptionFlags optionFlags, int structureByteStride )\r
62         {\r
63                 D3D11_BUFFER_DESC description;\r
64                 ZeroMemory( &description, sizeof( description ) );\r
65                 description.ByteWidth = sizeInBytes;\r
66                 description.Usage = static_cast<D3D11_USAGE>( usage );\r
67                 description.BindFlags = static_cast<UINT>( bindFlags );\r
68                 description.CPUAccessFlags = static_cast<UINT>( accessFlags );\r
69                 description.MiscFlags = static_cast<UINT>( optionFlags );\r
70                 description.StructureByteStride = structureByteStride;\r
71                 \r
72                 ID3D11Buffer* buffer = 0;\r
73                 if( data == nullptr )\r
74                 {\r
75                         if( RECORD_D3D11( device->InternalPointer->CreateBuffer( &description, 0, &buffer ) ).IsFailure )\r
76                                 throw gcnew Direct3D11Exception( Result::Last );\r
77                 }\r
78                 else\r
79                 {\r
80                         D3D11_SUBRESOURCE_DATA initialData;\r
81                         ZeroMemory( &initialData, sizeof( initialData ) );\r
82                         initialData.pSysMem = data->PositionPointer;\r
83                         data->Position += sizeInBytes;\r
84                         \r
85                         if( RECORD_D3D11( device->InternalPointer->CreateBuffer( &description, &initialData, &buffer ) ).IsFailure )\r
86                                 throw gcnew Direct3D11Exception( Result::Last );\r
87                 }\r
88                 \r
89                 return buffer;\r
90         }\r
91         \r
92         BufferDescription Buffer::Description::get()\r
93         {\r
94                 D3D11_BUFFER_DESC description;\r
95                 InternalPointer->GetDesc( &description );\r
96                 return BufferDescription( description );\r
97         }\r
98 }\r
99 }\r