18 internal unsafe IDirect3DVolumeTexture9*
pComPtr;
30 IDirect3DVolumeTexture9* ptr =
pComPtr;
32 int num = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, _D3DVOLUME_DESC*,
int>)(
int)(*(uint*)(*(
int*)ptr + 68)))((nint)ptr, 0u, &d3DVOLUME_DESC);
39 format = _003CModule_003E.ConvertWindowsFormatToXna(*(_D3DFORMAT*)(&d3DVOLUME_DESC));
44 base.InitializeDescription(
format.Value);
50 ((object)
this)._002Ector();
90 public void SetData<T>(
int level,
int left,
int top,
int right,
int bottom,
int front,
int back, T[] data,
int startIndex,
int elementCount) where
T :
struct
92 CopyData(level, left, top, right, bottom, front, back, data,
startIndex, elementCount, 0u, isSetting:
true);
105 public void GetData<T>(
int level,
int left,
int top,
int right,
int bottom,
int front,
int back, T[] data,
int startIndex,
int elementCount) where
T :
struct
107 CopyData(level, left, top, right, bottom, front, back, data,
startIndex, elementCount, 16u, isSetting:
false);
110 internal unsafe
static void CopyData<T>(
void* pData,
int rowPitch,
int slicePitch, T[] data,
int dataIndex,
int elementCount, _D3DVOLUME_DESC* pVolume, uint dwLockWidth, uint dwLockHeight, uint dwLockDepth, [MarshalAs(
UnmanagedType.U1)]
bool isSetting) where
T :
struct
116 fixed (T* ptr2 = &data[dataIndex])
118 byte* ptr = (
byte*)pData;
119 byte* ptr3 = (
byte*)ptr2;
122 if (0 >= dwLockDepth)
126 uint num3 = dwLockDepth;
130 if (0 < dwLockHeight)
132 uint num4 = dwLockHeight;
135 if (*(
int*)pVolume == 21)
148 _003CModule_003E.memcpy_s(ptr4, num2, ptr3, num2);
152 _003CModule_003E.memcpy_s(ptr3, num2, ptr4, num2);
154 ptr4 = rowPitch + ptr4;
155 ptr3 = (int)num2 + ptr3;
160 ptr = slicePitch + ptr;
167 private unsafe
void CopyData<T>(
int level,
int left,
int top,
int right,
int bottom,
int front,
int back, T[] data,
int startIndex,
int elementCount, uint
options, [MarshalAs(
UnmanagedType.U1)]
bool isSetting) where
T :
struct
171 if (data !=
null && data.Length != 0)
208 IDirect3DVolumeTexture9* ptr =
pComPtr;
210 int num3 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, _D3DVOLUME_DESC*,
int>)(
int)(*(uint*)(*(
int*)ptr + 68)))((nint)ptr, (uint)level, &d3DVOLUME_DESC);
217 *(
int*)(&d3DBOX) = left;
230 uint num9 = num6 * num7 * num8 * num4;
231 if ((
int)num5 * elementCount != (
int)num9)
235 IDirect3DVolumeTexture9* ptr2 =
pComPtr;
237 num3 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, _D3DLOCKED_BOX*, _D3DBOX*, uint,
int>)(
int)(*(uint*)(*(
int*)ptr2 + 76)))((nint)ptr2, (uint)level, &d3DLOCKED_BOX, &d3DBOX,
options);
242 CopyData((
void*)(
int)
System.
Runtime.
CompilerServices.
Unsafe.As<_D3DLOCKED_BOX, uint>(ref
System.
Runtime.
CompilerServices.
Unsafe.AddByteOffset(ref d3DLOCKED_BOX, 8)), *(
int*)(&d3DLOCKED_BOX),
System.
Runtime.
CompilerServices.
Unsafe.As<_D3DLOCKED_BOX,
int>(ref
System.
Runtime.
CompilerServices.
Unsafe.AddByteOffset(ref d3DLOCKED_BOX, 4)), data,
startIndex, elementCount, &d3DVOLUME_DESC, num6, num7, num8, isSetting);
249 num3 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint,
int>)(
int)(*(uint*)(*(
int*)ptr2 + 80)))((nint)ptr2, (uint)level);
264 if (graphicsDevice ==
null)
290 if (width > maxVolumeExtent || height > maxVolumeExtent || depth > maxVolumeExtent)
296 int num3 = (num + num2 - 1) / num2;
298 if (num3 > maxTextureAspectRatio)
306 int num4 = ((!mipMap) ? 1 : 0);
307 fixed (IDirect3DVolumeTexture9** ptr = &
pComPtr)
309 int num5 = *(
int*)graphicsDevice.
pComPtr + 96;
310 int num6 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, uint, uint, uint, uint, _D3DFORMAT, _D3DPOOL, IDirect3DVolumeTexture9**,
void**,
int>)(
int)(*(uint*)num5))((nint)graphicsDevice.
pComPtr, (uint)width, (uint)height, (uint)depth, (uint)num4, 0u, _003CModule_003E.ConvertXnaFormatToWindows(
format), (_D3DPOOL)1, ptr,
null);
323 internal unsafe
static void GetAndValidateSizes<T>(_D3DVOLUME_DESC* pVolume, uint* pdwFormatSize, uint* pdwElementSize) where
T :
struct
325 if (pVolume ==
null || pdwFormatSize ==
null || pdwElementSize ==
null)
331 uint num2 = *pdwFormatSize;
345 internal unsafe
static void GetAndValidateBox(_D3DVOLUME_DESC* pVolume, uint* pdwLockWidth, uint* pdwLockHeight, uint* pdwLockDepth, _D3DBOX* pBox)
347 if (pVolume ==
null || pdwLockHeight ==
null || pdwLockWidth ==
null || pdwLockDepth ==
null)
351 *pdwLockWidth = *(uint*)((
byte*)pVolume + 16);
352 *pdwLockHeight = *(uint*)((
byte*)pVolume + 20);
353 *pdwLockDepth = *(uint*)((
byte*)pVolume + 24);
358 uint num = *(uint*)((
byte*)pBox + 8);
359 if (num <= (uint)(*(
int*)((
byte*)pVolume + 16)))
361 uint num2 = *(uint*)pBox;
364 uint num3 = *(uint*)((
byte*)pBox + 12);
365 if (num3 <= (uint)(*(
int*)((
byte*)pVolume + 20)) && (uint)(*(
int*)((
byte*)pBox + 4)) < num3)
367 uint num4 = *(uint*)((
byte*)pBox + 20);
368 if (num4 <= (uint)(*(
int*)((
byte*)pVolume + 24)) && (uint)(*(
int*)((
byte*)pBox + 16)) < num4)
370 *pdwLockWidth = num - num2;
371 *pdwLockHeight = (uint)(*(
int*)((
byte*)pBox + 12) - *(
int*)((
byte*)pBox + 4));
372 *pdwLockDepth = (uint)(*(
int*)((
byte*)pBox + 20) - *(
int*)((
byte*)pBox + 16));
381 internal unsafe
static void ValidateTotalSize(_D3DVOLUME_DESC* pVolume, uint dwLockWidth, uint dwLockHeight, uint dwLockDepth, uint dwFormatSize, uint dwElementSize, uint elementCount)
385 uint num = dwLockWidth * dwLockHeight * dwLockDepth * dwFormatSize;
386 if (dwElementSize * elementCount != num)
429 fixed (IDirect3DVolumeTexture9** ptr2 = &
pComPtr)
432 int num = *(
int*)ptr + 96;
433 int num2 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, uint, uint, uint, uint, _D3DFORMAT, _D3DPOOL, IDirect3DVolumeTexture9**,
void**,
int>)(
int)(*(uint*)num))((nint)ptr, (uint)
_width, (uint)
_height, (uint)
_depth, (uint)
_levelCount, 0u, _003CModule_003E.ConvertXnaFormatToWindows(
_format), (_D3DPOOL)1, ptr2,
null);
463 ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint>)(
int)(*(uint*)(*(
int*)ptr + 8)))((nint)ptr);
467 if (parent !=
null &&
pComPtr !=
null)
482 IDirect3DVolumeTexture9* ptr =
pComPtr;
488 int num = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, _D3DVOLUME_DESC*,
int>)(
int)(*(uint*)(*(
int*)ptr + 68)))((nint)ptr, 0u, &d3DVOLUME_DESC);
512 ptr2 = (
byte*)reference.ToPointer();
520 num = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, _D3DLOCKED_BOX*, _D3DBOX*, uint,
int>)(
int)(*(uint*)(*(
int*)ptr + 76)))((nint)ptr, (uint)num6, &d3DLOCKED_BOX,
null, (uint)num7);
525 uint num8 = expectedByteSizeFromFormat * num2;
528 ptr2 = (
byte*)_003CModule_003E.new_005B_005D(num8 * num4 * num3);
545 _003CModule_003E.memcpy_s(ptr3, num8 * num3, ptr5, num8);
549 _003CModule_003E.memcpy_s(ptr5, *(uint*)(&d3DLOCKED_BOX), ptr3, num8);
551 ptr5 = *(
int*)(&d3DLOCKED_BOX) + ptr5;
552 ptr3 = (int)num8 + ptr3;
563 num = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint,
int>)(
int)(*(uint*)(*(
int*)ptr + 80)))((nint)ptr, (uint)num6);
575 num2 = ((num2 <= 1) ? 1u : (num2 >> 1));
576 num3 = ((num3 <= 1) ? 1u : (num3 >> 1));
577 num4 = ((num4 <= 1) ? 1u : (num4 >> 1));
594 if (0 < (nint)
array.LongLength)
601 _003CModule_003E.delete_005B_005D(ptr);
607 while (num < (nint)
pFaceData.LongLength);
612 internal unsafe
override IDirect3DBaseTexture9*
GetComPtr()
614 return (IDirect3DBaseTexture9*)
pComPtr;
620 if (texture3D !=
null)
622 ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint>)(
int)(*(uint*)(*(
int*)pInterface + 8)))((nint)pInterface);
623 texture3D.isDisposed =
false;
628 texture3D =
new Texture3D(pInterface, pDevice);
653 [HandleProcessCorruptedStateExceptions]
static string NullNotAllowed
static string ProfileFeatureNotSupported
static string ProfileTooBig
static string DeviceCannotBeNullOnResourceCreate
static string ResourcesMustBeGreaterThanZeroSize
static string InvalidDataSize
static string ProfileFormatNotSupported
static string InvalidRectangle
static string ProfileAspectRatio
static string ProfileNotPowerOfTwo
static string InvalidTotalSize
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)
DeviceResourceManager Resources
ProfileCapabilities _profileCapabilities
TextureCollection Textures
TextureCollection VertexTextures
unsafe IDirect3DDevice9 * pComPtr
static Exception GetExceptionFromResult(uint result)
int MaxTextureAspectRatio
List< SurfaceFormat > ValidVolumeFormats
void ThrowNotSupportedException(string message)
unsafe IDirect3DVolumeTexture9 * pComPtr
virtual unsafe int SaveDataForRecreation()
static unsafe Texture3D GetManagedObject(IDirect3DVolumeTexture9 *pInterface, GraphicsDevice pDevice, uint pool)
unsafe override IDirect3DBaseTexture9 * GetComPtr()
static unsafe void GetAndValidateBox(_D3DVOLUME_DESC *pVolume, uint *pdwLockWidth, uint *pdwLockHeight, uint *pdwLockDepth, _D3DBOX *pBox)
void SetData< T >(T[] data)
static unsafe void GetAndValidateSizes< T >(_D3DVOLUME_DESC *pVolume, uint *pdwFormatSize, uint *pdwElementSize)
unsafe int CopyOrRestoreData([MarshalAs(UnmanagedType.U1)] bool isStoring)
unsafe void CleanupSavedData()
static unsafe void ValidateTotalSize(_D3DVOLUME_DESC *pVolume, uint dwLockWidth, uint dwLockHeight, uint dwLockDepth, uint dwFormatSize, uint dwElementSize, uint elementCount)
unsafe void CreateTexture(GraphicsDevice graphicsDevice, int width, int height, int depth, [MarshalAs(UnmanagedType.U1)] bool mipMap, SurfaceFormat format)
Texture3D(GraphicsDevice graphicsDevice, int width, int height, int depth, [MarshalAs(UnmanagedType.U1)] bool mipMap, SurfaceFormat format)
static unsafe void CopyData< T >(void *pData, int rowPitch, int slicePitch, T[] data, int dataIndex, int elementCount, _D3DVOLUME_DESC *pVolume, uint dwLockWidth, uint dwLockHeight, uint dwLockDepth, [MarshalAs(UnmanagedType.U1)] bool isSetting)
unsafe Texture3D(IDirect3DVolumeTexture9 *pInterface, GraphicsDevice pDevice)
unsafe void InitializeDescription(SurfaceFormat? format)
virtual unsafe int RecreateAndPopulateObject()
void GetData< T >(T[] data)
virtual unsafe void ReleaseNativeObject([MarshalAs(UnmanagedType.U1)] bool disposeManagedResource)
override void Dispose([MarshalAs(UnmanagedType.U1)] bool P_0)
static bool IsPowerOfTwo(uint dwNumber)
unsafe StateTrackerTexture * pStateTracker
static unsafe void SwapBgr(void *pDest, void *pSrc, uint dwSize)
static byte GetExpectedByteSizeFromFormat(_D3DFORMAT format)
unsafe int CreateStateWrapper()
static void CheckDisposed(object obj, IntPtr pComPtr)
static void ValidateCopyParameters(int dataLength, int dataIndex, int elementCount)
static void ReRegisterForFinalize(object obj)
static byte Min(byte val1, byte val2)
static byte Max(byte val1, byte val2)
void ReleaseNativeObject([MarshalAs(UnmanagedType.U1)] bool disposeManagedResource)
int RecreateAndPopulateObject()
int SaveDataForRecreation()
static readonly IntPtr Zero
unsafe void * ToPointer()