Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ RecreateAndPopulateObject() [1/2]

virtual unsafe int Microsoft.Xna.Framework.Graphics.VertexBuffer.RecreateAndPopulateObject ( )
inlinepackagevirtual

Implements Microsoft.Xna.Framework.Graphics.IGraphicsResource.

Reimplemented in Microsoft.Xna.Framework.Graphics.DynamicVertexBuffer, and Microsoft.Xna.Framework.Graphics.DynamicVertexBuffer.

Definition at line 369 of file VertexBuffer.cs.

370 {
371 if (pComPtr != null)
372 {
373 return -2147467259;
374 }
375 if (pBufferData == null && _size != 0)
376 {
377 return -2147467259;
378 }
379 fixed (IDirect3DVertexBuffer9** ptr2 = &pComPtr)
380 {
381 GraphicsDevice parent = _parent;
382 IDirect3DDevice9* ptr = parent.pComPtr;
383 GraphicsDevice graphicsDevice = parent;
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);
386 if (num2 >= 0)
387 {
388 void* ptr3 = 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);
391 if (num2 >= 0)
392 {
393 uint size = _size;
394 _003CModule_003E.memcpy_s(ptr3, size, pBufferData, size);
395 ptr4 = pComPtr;
396 IDirect3DVertexBuffer9* intPtr = ptr4;
397 num2 = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, int>)(int)(*(uint*)(*(int*)intPtr + 48)))((nint)intPtr);
398 }
399 if (!((_usage & 8) == 8))
400 {
401 void* ptr5 = pBufferData;
402 if (ptr5 != null)
403 {
404 _003CModule_003E.delete_005B_005D(ptr5);
405 pBufferData = null;
406 }
407 }
408 }
410 return num2;
411 }
412 }
unsafe void AddTrackedObject(object managedObject, void *pComPtr, uint resourceManagementMode, ulong handle, ref ulong updatedHandle)
unsafe IDirect3DVertexBuffer9 * pComPtr

References Microsoft.Xna.Framework.Graphics.GraphicsResource._internalHandle, Microsoft.Xna.Framework.Graphics.GraphicsResource._parent, Microsoft.Xna.Framework.Graphics.VertexBuffer._size, Microsoft.Xna.Framework.Graphics.VertexBuffer._usage, Microsoft.Xna.Framework.Graphics.DeviceResourceManager.AddTrackedObject(), Microsoft.Xna.Framework.Graphics.GraphicsDevice.GetBufferUsage(), Microsoft.Xna.Framework.Graphics.VertexBuffer.pBufferData, Microsoft.Xna.Framework.Graphics.GraphicsDevice.pComPtr, Microsoft.Xna.Framework.Graphics.VertexBuffer.pComPtr, and Microsoft.Xna.Framework.Graphics.GraphicsDevice.Resources.

Referenced by Microsoft.Xna.Framework.Graphics.VertexBuffer.RecreateAndPopulateObject().