OSDN Git Service

14da67b477e415c530af64147b12615e87d11785
[dtxmania/dtxmania.git] / SlimDXc_Jun2010(VC++2008) / source / direct3d11 / EffectConstantBuffer11.cpp
1 /*\r
2 * Copyright (c) 2007-2010 SlimDX Group\r
3\r
4 * Permission is hereby granted, free of charge, to any person obtaining a copy\r
5 * of this software and associated documentation files (the "Software"), to deal\r
6 * in the Software without restriction, including without limitation the rights\r
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
8 * copies of the Software, and to permit persons to whom the Software is\r
9 * furnished to do so, subject to the following conditions:\r
10\r
11 * The above copyright notice and this permission notice shall be included in\r
12 * all copies or substantial portions of the Software.\r
13\r
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
20 * THE SOFTWARE.\r
21 */\r
22 #include "stdafx.h"\r
23 \r
24 #include "Direct3D11Exception.h"\r
25 \r
26 #include "Buffer11.h"\r
27 #include "EffectConstantBuffer11.h"\r
28 #include "ShaderResourceView11.h"\r
29 \r
30 using namespace System;\r
31 \r
32 namespace SlimDX\r
33 {\r
34 namespace Direct3D11\r
35\r
36         EffectConstantBuffer::EffectConstantBuffer( ID3DX11EffectConstantBuffer* pointer )\r
37         : EffectVariable( pointer )\r
38         {\r
39                 m_Pointer = pointer;\r
40         }\r
41         \r
42         EffectConstantBuffer::EffectConstantBuffer( IntPtr pointer )\r
43         : EffectVariable( pointer )\r
44         {\r
45                 m_Pointer = reinterpret_cast<ID3DX11EffectConstantBuffer*>( pointer.ToPointer() );\r
46         }\r
47         \r
48         Buffer^ EffectConstantBuffer::ConstantBuffer::get()\r
49         {\r
50                 ID3D11Buffer* buffer = 0;\r
51                 if( RECORD_D3D11( m_Pointer->GetConstantBuffer( &buffer ) ).IsFailure )\r
52                         return nullptr;\r
53                 \r
54                 return Buffer::FromPointer( buffer );\r
55         }\r
56 \r
57         void EffectConstantBuffer::ConstantBuffer::set( Buffer^ buffer )\r
58         {\r
59                 if( buffer == nullptr )\r
60                         RECORD_D3D11( m_Pointer->SetConstantBuffer(0) );\r
61                 else\r
62                         RECORD_D3D11( m_Pointer->SetConstantBuffer( static_cast<ID3D11Buffer*>( buffer->InternalPointer ) ) );\r
63         }\r
64         \r
65         ShaderResourceView^ EffectConstantBuffer::TextureBuffer::get()\r
66         {\r
67                 ID3D11ShaderResourceView* buffer = 0;\r
68                 if( RECORD_D3D11( m_Pointer->GetTextureBuffer( &buffer ) ).IsFailure )\r
69                         return nullptr;\r
70                         \r
71                 return ShaderResourceView::FromPointer( buffer );\r
72         }\r
73 \r
74         void EffectConstantBuffer::TextureBuffer::set( ShaderResourceView^ buffer )\r
75         {\r
76                 if( buffer == nullptr )\r
77                         RECORD_D3D11( m_Pointer->SetTextureBuffer(0) );\r
78                 else\r
79                         RECORD_D3D11( m_Pointer->SetTextureBuffer( static_cast<ID3D11ShaderResourceView*>( buffer->InternalPointer ) ) );\r
80         }\r
81 \r
82         Result EffectConstantBuffer::UndoSetConstantBuffer()\r
83         {\r
84                 HRESULT hr = m_Pointer->UndoSetConstantBuffer();\r
85                 return RECORD_D3D11(hr);\r
86         }\r
87 \r
88         Result EffectConstantBuffer::UndoSetTextureBuffer()\r
89         {\r
90                 HRESULT hr = m_Pointer->UndoSetTextureBuffer();\r
91                 return RECORD_D3D11(hr);\r
92         }\r
93 }\r
94 }\r