1349 {
1351 Helpers.CheckDisposed(this, intPtr);
1352 if (numVertices <= 0)
1353 {
1355 }
1356 if (primitiveCount <= 0)
1357 {
1359 }
1361 if (primitiveCount > maxPrimitiveCount)
1362 {
1364 }
1365 if (instanceCount <= 0)
1366 {
1368 }
1370 if (instanceCount > maxPrimitiveCount)
1371 {
1373 }
1374 VerifyCanDraw(bUserPrimitives: false, bIndexedPrimitives: true);
1376 bool flag = num == 0;
1378 if (!flag && !flag2)
1379 {
1380 _D3DPRIMITIVETYPE d3DPRIMITIVETYPE = _003CModule_003E.ConvertXnaPrimitiveTypeToDx(primitiveType);
1382 {
1383 IDirect3DDevice9* intPtr2 =
pComPtr;
1384 ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr,
int>)(
int)(*(uint*)(*(
int*)intPtr2 + 164)))((nint)intPtr2);
1386 }
1388 {
1389 try
1390 {
1392 {
1393 uint num2 = 1073741823u;
1395 uint num3 = ((instanceFrequency == 0) ? ((uint)instanceCount | 0x40000000u) : (((instanceFrequency >= 1073741823) ? 1073741823u : instanceFrequency) | 0x80000000u));
1396 IDirect3DDevice9* ptr =
pComPtr;
1397 int num4 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, uint,
int>)(
int)(*(uint*)(*(
int*)ptr + 408)))((nint)ptr, (uint)i, num3);
1398 if (num4 < 0)
1399 {
1400 throw GraphicsHelpers.GetExceptionFromResult((uint)num4);
1401 }
1402 }
1403 IDirect3DDevice9* ptr2 =
pComPtr;
1404 int num5 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, _D3DPRIMITIVETYPE, int, uint, uint, uint, uint,
int>)(
int)(*(uint*)(*(
int*)ptr2 + 328)))((nint)ptr2, d3DPRIMITIVETYPE, baseVertex, (uint)minVertexIndex, (uint)numVertices, (uint)
startIndex, (uint)primitiveCount);
1405 if (num5 < 0)
1406 {
1407 throw GraphicsHelpers.GetExceptionFromResult((uint)num5);
1408 }
1409 return;
1410 }
1411 finally
1412 {
1413 int num6 = 0;
1415 {
1416 do
1417 {
1418 IDirect3DDevice9* ptr3 =
pComPtr;
1419 ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, uint,
int>)(
int)(*(uint*)(*(
int*)ptr3 + 408)))((nint)ptr3, (uint)num6, 1u);
1420 num6++;
1421 }
1423 }
1424 }
1425 }
1426 int num7 = 0;
1427 int num8 = 0;
1432 System.
Runtime.
CompilerServices.
Unsafe.SkipInit(out _0024ArrayType_0024_0024_0024BY0BA_0040PAUIDirect3DVertexBuffer9_0040_0040 _0024ArrayType_0024_0024_0024BY0BA_0040PAUIDirect3DVertexBuffer9_0040_0040);
1434 {
1435 do
1436 {
1437 if (num8 < 16)
1438 {
1440 {
1441 *(int*)((ref *(_003F*)(num7 * 4)) + (ref *(_003F*)(&_0024ArrayType_0024_0024_0024BY0BA_0040H))) = num8;
1443 *(
int*)((ref *(_003F*)(num7 * 4)) + (ref *(_003F*)(&_0024ArrayType_0024_0024_0024BY0BA_0040I))) =
array[num8].
_vertexOffset;
1444 *(
int*)((ref *(_003F*)(num7 * 4)) + (ref *(_003F*)(&_0024ArrayType_0024_0024_0024BY0BA_0040I2))) =
array[num8]._instanceFrequency;
1445 VertexBuffer vertexBuffer =
array[num8]._vertexBuffer;
1446 *(int*)((ref *(_003F*)(num7 * 4)) + (ref *(_003F*)(&_0024ArrayType_0024_0024_0024BY0BA_0040I3))) = vertexBuffer._vertexDeclaration._vertexStride;
1447 *(int*)((ref *(_003F*)(num7 * 4)) + (ref *(_003F*)(&_0024ArrayType_0024_0024_0024BY0BA_0040PAUIDirect3DVertexBuffer9_0040_0040))) = (int)vertexBuffer.pComPtr;
1448 num7++;
1449 }
1450 num8++;
1451 continue;
1452 }
1454 }
1456 }
1457 int num9 = 0;
1458 if (0 >= instanceCount)
1459 {
1460 return;
1461 }
1462 int num13;
1463 while (true)
1464 {
1465 int num10 = 0;
1466 if (0 < num7)
1467 {
1468 do
1469 {
1470 uint num11 = (uint)(((int)((uint)num9 / (uint)(*(int*)((ref *(_003F*)(num10 * 4)) + (ref *(_003F*)(&_0024ArrayType_0024_0024_0024BY0BA_0040I2))))) + *(int*)((ref *(_003F*)(num10 * 4)) + (ref *(_003F*)(&_0024ArrayType_0024_0024_0024BY0BA_0040I)))) * *(int*)((ref *(_003F*)(num10 * 4)) + (ref *(_003F*)(&_0024ArrayType_0024_0024_0024BY0BA_0040I3))));
1471 IDirect3DDevice9* ptr4 =
pComPtr;
1472 int num12 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, IDirect3DVertexBuffer9*, uint, uint,
int>)(
int)(*(uint*)(*(
int*)ptr4 + 400)))((nint)ptr4, *(uint*)((ref *(_003F*)(num10 * 4)) + (ref *(_003F*)(&_0024ArrayType_0024_0024_0024BY0BA_0040H))), (IDirect3DVertexBuffer9*)(
int)(*(uint*)((ref *(_003F*)(num10 * 4)) + (ref *(_003F*)(&_0024ArrayType_0024_0024_0024BY0BA_0040PAUIDirect3DVertexBuffer9_0040_0040)))), num11, 0u);
1473 if (num12 >= 0)
1474 {
1475 num10++;
1476 continue;
1477 }
1478 throw GraphicsHelpers.GetExceptionFromResult((uint)num12);
1479 }
1480 while (num10 < num7);
1481 }
1482 IDirect3DDevice9* ptr5 =
pComPtr;
1483 num13 = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, _D3DPRIMITIVETYPE, int, uint, uint, uint, uint,
int>)(
int)(*(uint*)(*(
int*)ptr5 + 328)))((nint)ptr5, d3DPRIMITIVETYPE, baseVertex, (uint)minVertexIndex, (uint)numVertices, (uint)
startIndex, (uint)primitiveCount);
1484 if (num13 < 0)
1485 {
1486 break;
1487 }
1488 num9++;
1489 if (num9 >= instanceCount)
1490 {
1491 return;
1492 }
1493 }
1494 throw GraphicsHelpers.GetExceptionFromResult((uint)num13);
1495 }
1497 }
int currentVertexBufferCount
VertexBufferBinding[] currentVertexBuffers
unsafe void VerifyCanDraw([MarshalAs(UnmanagedType.U1)] bool bUserPrimitives, [MarshalAs(UnmanagedType.U1)] bool bIndexedPrimitives)
unsafe StateTrackerDevice * pStateTracker
ProfileCapabilities _profileCapabilities
unsafe IDirect3DDevice9 * pComPtr
void ThrowNotSupportedException(string message)