22 internal unsafe IDirect3DVertexBuffer9*
pComPtr;
42 ((object)
this)._002Ector();
70 CreateBuffer(vertexDeclaration, (uint)vertexCount, _003CModule_003E.ConvertXnaBufferUsageToDx(usage), (_D3DPOOL)1);
86 if (vertexDeclaration ==
null)
95 CreateBuffer(vertexDeclaration, (uint)vertexCount, _003CModule_003E.ConvertXnaBufferUsageToDx(usage), (_D3DPOOL)1);
109 int elementCount = ((data !=
null) ? data.Length : 0);
110 SetData(0, data, 0, elementCount, 0);
115 SetData(0, data,
startIndex, elementCount, 0);
118 public void SetData<T>(
int offsetInBytes, T[] data,
int startIndex,
int elementCount,
int vertexStride) where
T :
struct
120 CopyData(offsetInBytes, data,
startIndex, elementCount, vertexStride, 0u, isSetting:
true);
125 int elementCount = ((data !=
null) ? data.Length : 0);
126 GetData(0, data, 0, elementCount, 0);
131 GetData(0, data,
startIndex, elementCount, 0);
134 public void GetData<T>(
int offsetInBytes, T[] data,
int startIndex,
int elementCount,
int vertexStride) where
T :
struct
136 CopyData(offsetInBytes, data,
startIndex, elementCount, vertexStride, 16u, isSetting:
false);
145 int num = data.Length;
148 int num2 = -2147467259;
154 if (0 < currentVertexBufferCount)
159 if (currentVertexBuffers[num3]._vertexBuffer !=
this)
166 while (num3 < currentVertexBufferCount);
169 if (!isSetting && (
_usage & 8) == 8)
177 uint num5 = num4 * (uint)elementCount;
179 if (vertexStride != 0)
181 num6 = vertexStride - (int)num4;
186 if (elementCount > 1)
188 num5 = (uint)((elementCount - 1) * num6) + num5;
195 if ((uint)((int)num5 + offsetInBytes) >
_size)
225 ptr3 = offsetInBytes + ptr3;
227 IDirect3DVertexBuffer9* ptr4 =
pComPtr;
228 num2 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, uint,
void**, uint,
int>)(
int)(*(uint*)(*(
int*)ptr4 + 44)))((nint)ptr4, (uint)offsetInBytes, num5, &ptr2,
options);
239 _003CModule_003E.memcpy_s(ptr2,
_size - (uint)offsetInBytes, ptr5, num5);
242 _003CModule_003E.memcpy_s(ptr3,
_size - (uint)offsetInBytes, ptr5, num5);
247 _003CModule_003E.memcpy_s(ptr5, num5, ptr2, num5);
260 byte* ptr6 = (
byte*)ptr2;
262 for (
int i = 0; i < elementCount; i++)
280 ptr6 = vertexStride + ptr6;
283 ptr7 = vertexStride + ptr7;
301 IDirect3DVertexBuffer9* intPtr2 =
pComPtr;
302 num2 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr,
int>)(
int)(*(uint*)(*(
int*)intPtr2 + 48)))((nint)intPtr2);
311 dynamicGraphicsResource.SetContentLost(isContentLost:
false);
335 IDirect3DVertexBuffer9* ptr2 =
pComPtr;
336 num = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, uint,
void**, uint,
int>)(
int)(*(uint*)(*(
int*)ptr2 + 44)))((nint)ptr2, 0u, 0u, &ptr, 0u);
340 _003CModule_003E.memcpy_s(
pBufferData, size, ptr, size);
342 IDirect3DVertexBuffer9* intPtr = ptr2;
343 num = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr,
int>)(
int)(*(uint*)(*(
int*)intPtr + 48)))((nint)intPtr);
352 _003CModule_003E.delete_005B_005D(ptr3);
379 fixed (IDirect3DVertexBuffer9** ptr2 = &
pComPtr)
382 IDirect3DDevice9* ptr = parent.
pComPtr;
384 int num = *(
int*)ptr + 104;
385 int num2 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, uint, uint, _D3DPOOL, IDirect3DVertexBuffer9**,
void**,
int>)(
int)(*(uint*)num))((nint)ptr,
_size, graphicsDevice.
GetBufferUsage(
_usage), 0u, (_D3DPOOL)1, ptr2,
null);
389 IDirect3DVertexBuffer9* ptr4 =
pComPtr;
390 num2 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, uint,
void**, uint,
int>)(
int)(*(uint*)(*(
int*)ptr4 + 44)))((nint)ptr4, 0u, 0u, &ptr3, 0u);
394 _003CModule_003E.memcpy_s(ptr3, size,
pBufferData, size);
396 IDirect3DVertexBuffer9* intPtr = ptr4;
397 num2 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr,
int>)(
int)(*(uint*)(*(
int*)intPtr + 48)))((nint)intPtr);
404 _003CModule_003E.delete_005B_005D(ptr5);
423 if (parent !=
null &&
pComPtr !=
null)
445 if (parent != parent2)
447 vertexDeclaration.
Bind(parent2);
449 uint num = (uint)vertexDeclaration.
_vertexStride * dwVertexCount;
451 if (num > (uint)maxVertexBufferSize)
455 fixed (IDirect3DVertexBuffer9** ptr = &
pComPtr)
458 int num3 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, uint, uint, _D3DPOOL, IDirect3DVertexBuffer9**,
void**,
int>)(
int)(*(uint*)num2))((nint)
_parent.
pComPtr, num,
_parent.
GetBufferUsage(usage), 0u, pool, ptr,
null);
468 if ((usage & 8) == 8 && pool == (_D3DPOOL)1 && (
pBufferData = _003CModule_003E.new_005B_005D(num)) ==
null)
478 if (vertexBuffer !=
null)
480 ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint>)(
int)(*(uint*)(*(
int*)pInterface + 8)))((nint)pInterface);
481 vertexBuffer.isDisposed =
false;
504 _003CModule_003E.delete_005B_005D(ptr);
515 [HandleProcessCorruptedStateExceptions]
static string NullNotAllowed
static string WriteOnlyGetNotSupported
static string ProfileTooBig
static string ResourcesMustBeGreaterThanZeroSize
static string ResourceDataMustBeCorrectSize
static string VertexStrideTooSmall
unsafe object GetCachedObject(void *pComPtr)
unsafe void AddTrackedObject(object managedObject, void *pComPtr, uint resourceManagementMode, ulong handle, ref ulong updatedHandle)
unsafe void ReleaseAllReferences(ulong handle, [MarshalAs(UnmanagedType.U1)] bool dispose)
int currentVertexBufferCount
VertexBufferBinding[] currentVertexBuffers
virtual void Dispose([MarshalAs(UnmanagedType.U1)] bool P_0)
DeviceResourceManager Resources
ProfileCapabilities _profileCapabilities
uint GetBufferUsage(uint usage)
unsafe IDirect3DDevice9 * pComPtr
static Exception GetExceptionFromResult(uint result)
void ThrowNotSupportedException(string message)
unsafe VertexBuffer(GraphicsDevice graphicsDevice, VertexDeclaration vertexDeclaration, int vertexCount, BufferUsage usage)
virtual unsafe int RecreateAndPopulateObject()
unsafe VertexBuffer(IDirect3DVertexBuffer9 *pInterface, GraphicsDevice pDevice)
void GetData< T >(T[] data)
virtual unsafe void ReleaseNativeObject([MarshalAs(UnmanagedType.U1)] bool disposeManagedResource)
unsafe void * pBufferData
static unsafe VertexBuffer GetManagedObject(IDirect3DVertexBuffer9 *pInterface, GraphicsDevice pDevice, uint pool)
unsafe VertexBuffer(GraphicsDevice graphicsDevice, Type vertexType, int vertexCount, BufferUsage usage)
void SetData< T >(T[] data)
override void Dispose([MarshalAs(UnmanagedType.U1)] bool P_0)
unsafe void CopyData< T >(int offsetInBytes, T[] data, int startIndex, int elementCount, int vertexStride, uint options, [MarshalAs(UnmanagedType.U1)] bool isSetting)
unsafe IDirect3DVertexBuffer9 * pComPtr
unsafe void CreateBuffer(VertexDeclaration vertexDeclaration, uint dwVertexCount, uint usage, _D3DPOOL pool)
unsafe void _0021VertexBuffer()
virtual unsafe int SaveDataForRecreation()
VertexDeclaration _vertexDeclaration
void Bind(GraphicsDevice device)
static VertexDeclaration FromType(Type vertexType)
static void CheckDisposed(object obj, IntPtr pComPtr)
static void ValidateCopyParameters(int dataLength, int dataIndex, int elementCount)
static void ReRegisterForFinalize(object obj)
static unsafe void InitBlock(void *startAddress, byte value, uint byteCount)
void ReleaseNativeObject([MarshalAs(UnmanagedType.U1)] bool disposeManagedResource)
int RecreateAndPopulateObject()
int SaveDataForRecreation()